使用ifeq在Makefile中定义条件变量

20

我正在尝试根据条件在Makefile中定义变量。由于ifeq 只能在规则中运行,因此我添加了一个额外的规则(def_rule)供每个规则引用。

示例:

def_rule:
ifeq ($(TARGET), android)
    CC=arm-linux-androideabi-gcc
else
    echo "native build" 
endf

all:    def_rule tp xi_eid_chipset.o

很遗憾,调用make all会返回以下内容:

ifeq (linux, android)
/bin/sh: Syntax error: word unexpected (expecting ")")
make: *** [def_rule] Error 2

我无法弄清楚原因。我只是按照GNU Make文档中的示例进行操作。

您知道如何在Makefile中进行条件定义吗?

1个回答

29

条件语句可以放在规则之外:

ifeq ($(TARGET), android)
 $(info Android)
 CC=arm-linux-androideabi-gcc
else
 $(info native build)
 CC=something else
endif

(请注意,我添加了一些前导空格,只是为了更容易阅读--它们既不必要也不会有害。)


1
info 做什么? - red888
3
它将其参数打印到标准输出。文档在此处:https://www.gnu.org/software/make/manual/make.html#Make-Control-Functions。 - Beta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接