Makefile模式规则引用依赖关系中的词干

Jaa*_*ing 15 makefile gnu-make

我想要一个模式规则,其中包含从词干和使用通配符构建的依赖关系,即类似的东西

$(FILES): %.o: %.c $(wildcard %*.c)
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用:词干%不在通配符函数内扩展(参见http://www.gnu.org/software/make/manual/html_node/Pattern-Rules.html),而自动变量$*列出依赖项时似乎无法识别.

做这样的事情是否有(不太愚蠢)的方式?

eri*_*ous 22

正如GNU make手册第10.5.3节所述,自动变量(它是什么$*)在先决条件中不可用,但它也指的是一种解决方法,即二次扩展.

如果我理解它(和你),这样的事情应该做你想要的:

.SECONDEXPANSION:
$(FILES): %.o: %.c $$(wildcard $$**.c)