0

クリーンターゲットのオブジェクトファイルを削除するためのFORループを書いていて衝撃を受けました。以下のコードを試しましたが、エラーメッセージが表示されます。誰でもこれについて私を助けてもらえますか?

TES_FILE := D:/Technique/Testmake/1.obj
TES_FILE += D:/Technique/Testmake/2.obj

clean:
$(foreach objFile,$(TES_FILE),if exist $(objFile) DEL /F "$(subst /,\,$(objFile))")

エラーメッセージ:

エラー メッセージ: D:/Technique/Testmake/1.obj DEL /F "D:\Technique\Testmake\1.obj" が存在する場合 D:/Technique/Testmake/2.obj DEL /F "D:\Technique が存在する場合\Testmake\2.obj" 無効なスイッチ - "テクニック"。gmake: * [クリーン] エラー 1

ありがとう、アナンド

回答が得られなかったので、この質問を再投稿します。

4

1 に答える 1

1

Make のforeach機能はテキスト置換です。の「本体」ごとに異なるシェルやコマンドを実際に呼び出すわけではありませんforeach。したがって、make のforeach結果は、本体のすべてのインスタンスを一緒に追加した結果にすぎません。例えば:

$(foreach A,W X Y Z,$(A) $(A))

単一の string を生成しますW W X X Y Y Z Zifあなたの場合、すべてのステートメントの連結を含む単一の文字列が生成されます。もちろん、これは機能しません。

そもそも必要だと感じた理由を述べていただければ、助けやすくなります。foreach私だったら次のように書きます。

clean:
       DEL /F $(subst /,\,$(TES_FILE))
于 2013-10-15T13:52:12.520 に答える