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

使用ifeq在Makefile中定义条件变量,makefile,conditional,Makefile,Conditional,我试图根据条件在Makefile中定义变量。由于ifeq只能在规则中运行,因此我为每个规则添加了一个附加规则(def_规则) 例如: 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,andro

我试图根据条件在Makefile中定义变量。由于ifeq只能在规则中运行,因此我为每个规则添加了一个附加规则(def_规则)

例如:

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:语法错误:单词unexpected(应为“)”)
make:**[def_规则]错误2

我不明白为什么。我刚刚跟随了GNU Make文档中的示例


您知道如何在Makefiles中定义条件吗?

条件可以超出规则:

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

(请注意,为了便于阅读,我在前面加了几个空格,它们既不是必需的,也不是有害的。)

信息做什么?@red888:它将参数打印到标准输出。医生。