5

ある 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 $< $*
4

1 に答える 1

0

関数ワイルドカードを使用する場合、ワイルドカード文字は % ではなく * です

($wildcard *Optional.xml)

于 2013-01-08T22:38:40.987 に答える