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

use*_*607 10 conditional makefile

我试图根据条件在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
Run Code Online (Sandbox Code Playgroud)

不幸的是,调用make all会返回:

ifeq(linux,android)
/bin/sh:语法错误:单词意外(期待")")
make:***[def_rule]错误2

我无法弄清楚为什么.我刚刚在GNU Make文档中关注了一些示例.

你知道如何在Makefile中做条件定义吗?

Bet*_*eta 12

条件可能超出规则:

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

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

  • @red888:它将其参数打印到标准输出。文档[此处](https://www.gnu.org/software/make/manual/make.html#Make-Control-Functions)。 (3认同)