Makefile条件规则执行

时间:2013-08-22 09:01:11

标签: makefile

我需要根据环境变量的存在来运行特定规则。

test1:
    -echo "test1"

test2:
    -echo "test2"

run:
    -echo "Running"

所以我的要求是如果我make run,那么规则test1test2都应该执行IF环境变量,而不是在shell上设置RUN_ONLY_TEST1。但是,如果设置了此环境变量,则只应执行规则test1

如果可行的话,有人可以帮助我。这只是一个示例,我在原始makefile中有很多命令,因此将if / else放在run target中需要大量重复。

1 个答案:

答案 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))

“运行”部分是错误的,因为到达此规则时已经构建了所有先决条件(即测试运行)。