非常に大きなプロジェクトの makefile を最適化していますが、GNU make のvpath
コマンドは非常に限られた作業しかできないことがわかりました。例えば:
vpath %.o $(OBJPATH)
OBJPATH によってパス値内のすべてのオブジェクト ファイルを検索することを意味します。つまり/dir1/../dir2/obj1.o
、 と/dir3/../dir2/obj1.o
は同じファイルですが、 を既に作成している場合、 と同じファイルを表しているにもかかわらず/dir1/../dir2/obj1.o
、 ツールが のルールを考えているときに、/dir3/../dir2/obj1.o
を見つけることができず、 を再作成する必要があります。/dir3/../dir2/obj1.o
/dir1/../dir2/obj1.o
GNU make のソース コードを確認しました。ハッシュ テーブルを使用してファイル パス文字列を比較するため、文字列が異なる場合、それらは同じファイルを表しますが、vpath
.
vpath
より強力な機能で実現しませんか?