2016-12-22 9 views
1

他のファイルコンテンツの依存関係を持つMakefileビルドの作成中に問題が発生しました。ファイル内容によるMakefile依存関係(存在しない可能性があります)

私はオンザフライ前提条件を生成するために、メイクファイルでそのような何かを書くことができることを知っている:

result/nuclease.stat : $(shell cat config/nuclease.sample.list) 

#bash 
make result/nuclease.stat 

しかし、問題は、ファイル のconfig/nuclease.sample.listが存在しない可能性がありますということです私はその目標を持っています。

私はのconfig/nuclease.sample.list前に$(シェル猫のconfig/nuclease.sample.list)が評価されます要求するようにメイクを強制することができれば - 問題が解決されます。

どのような依存関係を作成する必要がありますか?

もう一つ、私はすべてのGNU makeの良い資質を維持たいと思います:プロセスそれら一度だけなど、一度だけファイルをダウンロード..

Makefile dependency tree

答えて

4

を確認してください最も簡単な答えはconstructed include filesを使用することです。この方法では、必要な依存関係を定義したmakefileをインクルードし、必要な情報を含むインクルードファイルを生成するmakeルールを提供します。これはあなたがしなければならないことです:makeは、残りの作業を行う方法を知っています。あなたの質問に基づいて、それは次のようなものかもしれません:

include nuclease-sample-list.mk 

nuclease-sample-list.mk: config/nuclease.sample.list 
     echo "result/nuclease.stat : $$(cat $<)" > [email protected] 

これだけです。古いバージョンのGNU makeを使用している場合は、警告メッセージが表示されないように、includeの代わりに-includeを使用する必要があります。

関連する問題