2017-03-12 10 views
0

は、私が達成しようとしているものです:GNU makeからインクルードされたファイルのリストを生成するには?ここ

たびが呼び出さされていることを確認し、私のMakefile内で私は糸くずのツールを実行するスクリプトの呼び出しを持っています。しかし、コードベース全体を再度検索するようlintに指示するのではなく、インクリメンタルビルドを行ったファイルに対してのみ実行する必要があります。ファイルが再コンパイルされていない場合は、lintを再度実行する必要はありません。

私には分かりませんは、インクリメンタルビルドでどのファイルを再コンパイルする必要があるかを確認します。私はそれがどこでもリストとして保存されているとは思わない。

に出力し、後でstdoutを解析してどのファイルが再コンパイルされたかを確認するスクリプトを作成すると、このインクリメンタルビルドリストを取得する方法はありますか?

答えて

1

私はこのmakeの呼び出し時に古くなっていたファイルに対してlintを実行したいだけでは不明です。あなたがmakeを5回実行し、5回目の間にのみlintツールを再実行すると、5回目のmakeの実行中に修正されたファイルが消えてしまいますが、最初の4回。

lintを最後に実行してから変更されたすべてのファイルに対して実際にlintを実行したいと思うようです。これを行うのは簡単です:

run-lint: $(SOURCES) 
     lint $? 
     @touch [email protected] 

$?automatic variableは糸くずが、それが最新の状態になりましたですので、我々がターゲットファイルを触れ完了し、その後の後、ターゲットファイルより新しいファイルだけに展開します。 make run-lintを実行するたびに、最後に実行した後に変更されたすべてのファイルが削除されます。

+0

ありがとうございます!たぶん私の質問からは分かりませんでしたが、それはまさに私が望んでいたことです(最後に走ったときのデルタのためにのみlintを実行します)。このソリューションは、意図したとおりに動作します。 –

関連する問題