根据输入文本文件在makefile中生成目标

时间:2013-08-28 13:38:06

标签: makefile vhdl

我是新手并使用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个目标。

1 个答案:

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