非常に大きなプロジェクトのmakefileをいくつか最適化していますが、GNU makeのvpath
コマンドは非常に限られた作業しか行えないことがわかりました。例:なぜGNU makeのvpathコマンドが弱いのですか?
vpath %.o $(OBJPATH)
は、OBJPATHによってパス値のすべてのオブジェクトファイルを検索することを意味します。つまり、/dir1/../dir2/obj1.o
と同じファイルであっても、/dir1/../dir2/obj1.o
とは同じファイルですが、既に/dir1/../dir2/obj1.o
を作成していて、/dir3/../dir2/obj1.o
のツールの考え方ではまだ見つからず、/dir3/../dir2/obj1.o
を再作成する必要があります。 。
私はGNU makeソースコードをチェックしました。ハッシュテーブルを使用してファイルパス文字列を比較するので、文字列が異なる場合、同じファイルを表していますが、vpath
を使用しても一致させることはできません。
より強力な機能を備えたvpath
を実現してみませんか?
これは非常に不明です。ツールの思考が '/ dir3 /../ dir2/obj1.o'のルールになったら、どのように解析すればよいでしょうか?たぶんあなたが私たちにルールを示すなら、私たちは助けることができます。 – Beta