我有一個由腳本基於一個XML文件,並任選的另一種XML文件生成一些.c和.h文件。Makefile中使用可選的依賴
從我讀過我應該可以使用通配符,例如:
%Generated.c %Generated.h : %Compulsory.xml $(wildcard %Optional.xml)
generation-script $< $*
的文件XXXGenerated.c /小時,當我改變XXXCompulsory.xml但不是當我改變進行再生XXXOptional.xml。有誰知道爲什麼?
我能找到解決問題的重複的規則如下:
%Generated.c %Generated.h : %Compulsory.xml
generation-script $< $*
%Generated.c %Generated.h : %Compulsory.xml %Optional.xml
generation-script $< $*
,但我會想有一個更好的方式來指定一個可選的依賴?
謝謝!
注:此相同的問題已經問過(例如How to manage C header file dependencies?),但在這種情況下,我不能讓編譯器生成.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 $< $*
這應該工作,你確定你是不是混淆可選的位置? – perreal
@perreal感謝您的答覆,見上面編輯的 – austinmarton
可能重複[我怎樣才能使一個模式規則的依賴在一個Makefile可選?](http://stackoverflow.com/questions/34105205/how-can-i-make -a-pattern-rule-dependency-optional-in-a-makefile)投票結束這種方式,因爲其他人有正確答案。 –