我需要根据环境变量的存在来运行特定规则。
test1:
-echo "test1"
test2:
-echo "test2"
run:
-echo "Running"
所以我的要求是如果我make run
,那么规则test1
和test2
都应该执行IF环境变量,而不是在shell上设置RUN_ONLY_TEST1
。但是,如果设置了此环境变量,则只应执行规则test1
。
如果可行的话,有人可以帮助我。这只是一个示例,我在原始makefile中有很多命令,因此将if / else放在run target中需要大量重复。
答案 0 :(得分:1)
你自己暗示RUN_ONLY_TEST1
是另一种表达RUN_NOT_TEST2345
的方式。即你创建了一个负面的问题陈述,这有点难以实现,因为它意味着许多排除。
我会采取积极的方法,最简单的方法是运行测试列表:
TESTS = 1 2 # Can override this on command line or environment
在makepp中,您可以将最后一条规则简单地写为:
run: test$(TESTS)
在gmake中,这会有点困难:
run: $(addprefix test,$(TESTS))
“运行”部分是错误的,因为到达此规则时已经构建了所有先决条件(即测试运行)。