我有一些 .c 和 .h 文件,它们是由基于一个 XML 文件和可选的另一个 XML 文件的脚本生成的。
根据我的阅读,我应该能够使用通配符,例如:
%Generated.c %Generated.h : %Compulsory.xml $(wildcard %Optional.xml)
generation-script $< $*
当我更改 XXXCompulsory.xml 时,文件 XXXGenerated.c/h 正在重新生成,但在我更改 XXXOptional.xml 时不会。有谁知道为什么?
我可以通过重复规则解决问题,如下所示:
%Generated.c %Generated.h : %Compulsory.xml
generation-script $< $*
%Generated.c %Generated.h : %Compulsory.xml %Optional.xml
generation-script $< $*
但我原以为有更好的方法来指定可选依赖项?
谢谢!
注意:之前已经问过同样的问题(例如,如何管理 C 头文件依赖项?)但在这种情况下,我不能让编译器生成 .d 文件。
编辑: Optional.xml 的位置很好,因为如果我只指定规则,它就可以工作:
%Generated.c %Generated.h : %Compulsory.xml %Optional.xml
generation-script $< $*
并尝试仅针对 Optional.xml 存在的目标进行编译。
但我注意到这不适用于括号:
%Generated.c %Generated.h : %Compulsory.xml $(%Optional.xml)
generation-script $< $*