【问题标题】:How can I set CC and AR in Makefile that works for both Windows and Linux platforms?如何在适用于 Windows 和 Linux 平台的 Makefile 中设置 CC 和 AR?
【发布时间】:2017-01-29 23:25:32
【问题描述】:

我的团队成员使用 Windows 构建环境,并且 Makefile 具有:

CC := $(ANDROID_NDK_HOME)/toolchains/aarch64-linux-android-4.9/prebuilt/windows-x86_64/bin/aarch64-linux-android-gcc.exe
AR := $(ANDROID_NDK_HOME)/toolchains/aarch64-linux-android-4.9/prebuilt/windows-x86_64/bin/aarch64-linux-android-ar.exe

其中 ANDROID_NDK_HOME 是用户必须设置的环境变量。

我想在我的 Ubuntu 安装中使用相同的 Makefile,但想更改 Makefile 以便我们两个都可以使用相同的 Makefile。那可能吗?在此期间,我进行了以下有效的更改。

CC := $(ANDROID_NDK_HOME)/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-gcc
AR := $(ANDROID_NDK_HOME)/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-ar

基本上,将“windows-x86”更改为 linux-x86 并删除了二进制本身名称中的 .exe。

任何提示/指针表示赞赏。谢谢。

【问题讨论】:

    标签: linux windows makefile cross-platform gnu-make


    【解决方案1】:

    您可以在某些特定于操作系统的环境变量上进行分支。例如:COMSPEC 在 Windows 上始终设置为非空值,可能在其他平台上未定义。

    ifneq ($(COMSPEC),)
      # Windows
      CC := $(ANDROID_NDK_HOME)/toolchains/aarch64-linux-android-4.9/prebuilt/windows-x86_64/bin/aarch64-linux-android-gcc.exe
      AR := $(ANDROID_NDK_HOME)/toolchains/aarch64-linux-android-4.9/prebuilt/windows-x86_64/bin/aarch64-linux-android-ar.exe
    else
      # Not Windows
      CC := $(ANDROID_NDK_HOME)/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-gcc
      AR := $(ANDROID_NDK_HOME)/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-ar
    endif
    

    【讨论】:

    • 谢谢@AlexeySemenyuk。我决定使用 ifeq($(OS),WindowsNt)
    • @guraaf,在我的 Win7 框中,OS 环境变量的值是 Windows_NT,而不是 WindowsNt。可能这只是您的拼写错误,或者您盒子上的OS 环境变量的值确实是WindowsNt。无论如何,这是一个明确的暗示,如果可能的话,不要依赖变量的特定值。这是使用COMSPEC 的另一个专业论点。
    • 谢谢阿列克谢。这是一个错字。是的,Windows_NT。但你是对的。我将切换到 ComSpec。
    猜你喜欢
    • 2010-11-17
    • 2012-04-13
    • 1970-01-01
    • 2017-11-10
    • 2018-01-22
    • 2017-12-27
    • 1970-01-01
    • 2016-03-29
    • 2014-03-04
    相关资源
    最近更新 更多