2013-08-22 78 views
0

我有一个需要根据环境变量的存在运行特定的规则。Makefile有条件的规则执行

test1: 
    -echo "test1" 

test2: 
    -echo "test2" 

run: 
    -echo "Running" 

所以,我的要求是,如果我做make run,那么这两个规则test1test2应该执行IF环境变量说RUN_ONLY_TEST1不上壳设置。但是,如果设置了此环境变量,则只应执行规则test1

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

回答

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

“运行”部分然后是错误的,因为所有先决条件都已建立(即测试已经运行),直到达到此规则为止。

+0

感谢您的建议。我会在我的主要项目中尝试这个。 – sarbjit