ある XML ファイルと、オプションで別の XML ファイルに基づくスクリプトによって生成された .c ファイルと .h ファイルがいくつかあります。
私が読んだことから、ワイルドカードを使用できるはずです。たとえば、次のようになります。
%Generated.c %Generated.h : %Compulsory.xml $(wildcard %Optional.xml)
generation-script $< $*
ファイル XXXGenerated.c/h は、XXXCompulsory.xml を変更すると再生成されますが、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 $< $*