我是新手并使用makefile。 我有一个问题:
我要执行3个测试:
我在make文件中手动添加了test1,test2和test3作为目标,如下所示:
test1: compile_design
compile test1_testname.vhd >> log_file.log
simulate test1_testname
我为test2和3做了同样的事。
我也添加了
all : test1 test2 test3
这非常有效。
现在,我想让这个makefile更具可移植性: 来自包含以下信息的输入文件:
test1_testname
test2_testname
test3_testname
我希望自动添加3个目标 如果输入文件包含n行,则通常为n个目标。
答案 0 :(得分:1)
您甚至不需要使用源文件。在Makefile的顶部列出目标可能更容易。然后,通过使用模式规则,您可以使用以下内容获得所需的内容。
TESTS=test1_testname test2_testname test3_testname
all: $(TESTS)
%_testname: compile_design
compile $@.vhd >> log_file.log
simulate $@
您可以注意到,模式规则将目标定义为test1_testname
而不是较短的test1
。这是为了避免使用%
模式规则。
如果您确实想使用其他文件列出目标,可以使用
更改第一行TESTS=$(shell cat yoursourcefile)