我想使用模式相关变量中的依赖项来定义 GNU make 模式规则。我想要的是这样的:
%.exe : $(%_EXE_SOURCES) $(%_EXE_RESOURCES)
$(CSC_V)$(CSC) $(CSCFLAGS) $($*_EXE_CSCFLAGS) -target:exe \
-out:$@ $($*_EXE_SOURCES) $($*_EXE_RESOURCES)
稍后定义类似的东西
FOO_EXE_SOURCES = src/Foo.cs
all: Foo.exe
该规则提出了要建造的工程;在规则正文中$($*_EXE_SOURCES)
变量扩展为$(FOO_EXE_SOURCES)
,扩展到src/Foo.cs
。然而,依赖关系不能正确扩展;更改 src/Foo.cs 不会导致 Foo.exe 被重建。
我怀疑这实际上不能在 make 中完成,但也许有人有一个类似工作的 make 片段?
您可以使用“二次扩展”。像这样的事情应该可以实现您正在寻找的内容:
Foo_EXE_SOURCES := foo.cs bar.cs baz.cs
all: Foo.exe
.SECONDEXPANSION:
%.exe: $$($$*_EXE_SOURCES)
$(CSC_V)$(CSC) $(CSCFLAGS) $($*_EXE_CSCFLAGS) -target:exe \
-out:$@ $($*_EXE_SOURCES) $($*_EXE_RESOURCES)
启用二次扩展允许使用自动变量(即$*
在这种情况下)在先决条件列表中,否则会出现这样的情况not work.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)