如果设置了特定的环境变量,我想运行特定的规则,否则运行默认规则。例如,如果未设置环境变量test1 and test2
,我想运行MYTARGETS1
。但是,使用以下代码时,使用test1
命令时始终会运行make run
规则。
MYTARGETS1 ?= True
ifeq (${MYTARGETS1},True)
MYTARGETS = test1 test2
else
MYTARGETS = test1
endif
test1:
echo "test1"
test2:
echo "test2"
run: common $(MYTARGETS)
common:
echo "common"
答案 0 :(得分:2)
您的代码中存在一些小错误。第一行应为MYTARGETS1 ?= false
或MYTARGETS1 ?=
,因为?=
称为条件赋值,意味着如果尚未设置变量,请使用此处指定的任何内容进行设置。根据我建议的当前更改,如果您将MYTARGETS1
传递给make
,那么makefile将根据您的要求运行
make MYTARGETS1=true