私はmakeファイルとVPATH変数で遊んでいます。基本的に、私はいくつかの異なる場所(VPATHで指定)からソースファイルを取得し、必要な.oファイルのリストを使用して現在のディレクトリにコンパイルします。
これまでのところ、依存関係情報を「.depend」というファイルに生成し、それを含めています。Gnumakeは、これまでに定義されたルールを使用して、含まれているファイルが存在しない場合は作成しようとします。これで問題ありません。基本的に、私のmakefileは次のようになります。
VPATH=A/source:B/source:C/source
objects=first.o second.o third.o
executable: $(objects)
.depend: $(objects:.o=.c)
$(CC) -MM $^ > $@
include .depend
さて、本当の質問ですが、.dependファイルの生成をなんらかの方法で抑制できますか?私は現在、クリアケース環境で作業しています->遅いので、依存関係情報を更新するときに、もう少し制御できるようにしたいと思います。
makeを実行する前に.dependファイルにアクセスするスクリプトで物事をラップすることができるので(したがって、どのソースファイルよりも新しいものにする)、多かれ少なかれ学術的な演習ですが、どういうわけか私ができるかどうかを知ることは興味深いです'pure'makeを使用して抑制します。
VPATH解決を行うために変数に依存しているため、ソースファイルへの依存関係を削除できません(つまり、単にを使用します.depend:
) 。$^
ディレクティブが更新された結果として依存関係のみを更新する方法があれば#include
、もちろんそれはさらに良いでしょう..しかし、私はそのために息を止めていません.. :)