1

Makefile でマスター ビルド ターゲットを作成しています。「all_images」のようなターゲットがあります

all_images: fast_image slow_image

fast_image: clean_objects dep_1 dep_2 dep_3

slow_image: clean_objects dep_1 dep_2 dep_3

fast_image には makefile に他の条件があり、最終的なイメージ名に fast_image が含まれ、slow_image には同じ名前が含まれます。

fast と slow のビルドの間にクリーンアップしたい (すべての .o ファイルを削除します。明らかに最終的なイメージではありません) が、これを行うと、fast_image の実​​行中に既に発生しているため、2 回目は clean_objects は発生しません。

「slow_image は変更されたものをすべて再構築する必要があるため、クリーンアップする必要はありません」と言う前に、私たちの特定の環境には、コード生成を行う非常に複雑な makefile、gnu_make のキックオフを行う clearmake などがあります。間にオブジェクトをクリーンアップする必要があります。すでに発生した依存関係を強制的に発生させる方法はありますか? どこにでも行ってすべての .o ファイルを手動で削除できることはわかっていますが、clean_objects ターゲットは既にオフになっており、あらゆる種類の複雑なオブジェクトの削除を行う依存関係がたくさんあります。私はする必要はありません。

ありがとう!

4

1 に答える 1

0

これを行うには多くの方法があると思いますが、最初に頭に浮かぶのは、2 つの個別のターゲットを作成しclean_fast_image_objectsclean_slow_image_objectsそれらの両方で、clean_objects現在実行されているコマンドを実行する定義済みの makefile 関数を呼び出すことです。

于 2013-03-07T16:42:40.220 に答える