Makefile没有根据环境变量值设置目标

时间:2013-08-26 03:38:56

标签: makefile

如果设置了特定的环境变量,我想运行特定的规则,否则运行默认规则。例如,如果未设置环境变量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"

1 个答案:

答案 0 :(得分:2)

您的代码中存在一些小错误。第一行应为MYTARGETS1 ?= falseMYTARGETS1 ?=,因为?=称为条件赋值,意味着如果尚未设置变量,请使用此处指定的任何内容进行设置。根据我建议的当前更改,如果您将MYTARGETS1传递给make,那么makefile将根据您的要求运行

make MYTARGETS1=true