我正在编写一个静态模式规则,以生成与模式匹配的目标的依赖关系列表。依赖关系是通过shell命令生成的(文件内容提供了有关依赖关系的信息)。这是显式规则的示例:
f1.o: $(shell gendep src/f1/f1.source)
... (some compilation command here) ...
虽然这可行,但由于我要保持相同的文件结构,所以我不想为每个新目标重写它。我尝试使用静态模式规则是这样的:
%.o: $(shell gendep src/%/%.source)
...
我在将词干(%的匹配模式)传递给shell命令时遇到麻烦。shell命令按字面意义进行解释,并在src /%/%。source上运行,当然这是不存在的。
我怀疑有将茎传递给shell命令的方法,但我似乎没有找到它。这里有任何专家可以帮助我吗?抱歉,这是一个新手问题(我的确是一个问题)。
您尝试执行的操作很困难,因为通常Make会$(shell ...)
在运行任何规则甚至决定必须运行哪些规则之前扩展指令。我们可以通过辅助扩展(稍微扩展一点的Make技巧)来阻止它:
.SECONDEXPANSION:
%.o: $$(shell gendep src/$$*/$$*.source)
...
还存在其他用于自动生成依赖项的方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句