两个编译器的一个makefile

Ale*_*x F 11 c c++ g++ cross-compiling gnu-make

我有两个makefile,用于本机和交叉编译.它们之间唯一的区别是编译器名称:

# makefile
CC = g++
...
# makefile-cc
CC = arm-linux-gnueabihf-g++
...

为了进行本机编译,我执行make,进行交叉编译,我执行make -f makefile-cc.我希望有一个makefile,应该使用make本机编译执行,并make cross进行交叉编译.这样做的正确语法是什么,例如:

# makefile (C-like pseudo-code)
if cross
    CC = arm-linux-gnueabihf-g++
else
    CC = g++

ber*_*lus 18

您可以使用语法target:assign on a line 为特定目标指定/附加变量.这是一个例子:

native: CC=cc
native:
    echo $(CC)

cross: CC=arm-linux-gnueabihf-g++
cross:
    echo $(CC)
Run Code Online (Sandbox Code Playgroud)

调用

make native
Run Code Online (Sandbox Code Playgroud)

(或只是make,这里)打印

echo cc
cc
Run Code Online (Sandbox Code Playgroud)

并打电话

make cross
Run Code Online (Sandbox Code Playgroud)

版画

echo arm-linux-gnueabihf-g++
arm-linux-gnueabihf-g++
Run Code Online (Sandbox Code Playgroud)

所以你可以使用你常用的编译线与$(CC)


Ano*_*non 8

您可以传递参数来制作.
例如make TARGET=native,make TARGET=cross然后使用它

ifeq ($(TARGET),cross)
        CC = arm-linux-gnueabihf-g++
else
        CC = g++
endif
Run Code Online (Sandbox Code Playgroud)