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

我试图根据条件在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中做条件定义吗?

最佳答案
条件可能超出规则:

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

(请注意,我在几个领先的空间里扔了,只是为了让它更容易阅读 – 它们既不必要也不危害.)

转载注明原文:条件变量在Makefile中使用ifeq定义 - 代码日志