在Makefile的先决条件变量中使用%steam

时间:2014-10-18 20:48:45

标签: makefile gnu-make

我经常发现自己想要引用不在配方中的词干而是在先决条件本身中引用。

例如,我在这里玩了一些python代码,它们以递归的方式扫描可执行源代码的.cpp和.hpp文件,以检测它所依赖的对象。脚本本身运行良好,但由于输入的不同,我无法弄清楚如何将它与makefile连接。

$(TESTS): bin/tests/%_a : bin/obj/%.o $(foreach var, $(shell python3 ./autoInc.py ./src/lib/%.cpp), bin/obj/$(var).o)
    @echo "#---------------------------"
    @echo "# Linking $@ "
    $(CC) -o $@ $^

(这里makefile执行./autoInc.py ./src/lib/%.cpp而没有替换)

1 个答案:

答案 0 :(得分:1)

这是表格:

.SECONDEXPANSION:

$(TESTS): %_a : $$(foreach var, $$(shell whatever $$*.cpp), $$(var).o)
    ...

在尝试合并你的python之前,我建议你使用一个非常简单的玩具规则。