我想定义一个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 的片段可以替代?