1

メイクファイルでcleanは、私はのように書いていrm -rf *.oます。しかし、ファイルのクリーニングではありません。私が与えた場合rm -rf libdummy.oは、適切にクリーニングします。したがって、を使用する*と、期待どおりに機能しません。

掃除:
    rm -rf *.o
    rm -rf ダミー.a

そして出力は

    [実行] rm -rf *.o
    [exec] rm -rf ダミー.a

フォルダにa.ob.oおよびdummy.a. その後make cleana.oそのb.oフォルダー自体に存在し、dummy.a削除されました。

注 : この make を Windows で実行し、tornado 2.2 パッケージを使用して vxworks 用にビルドしています。makefile の make、cd、cp、rm などのすべてのコマンドは tornado パッケージから実行されます。というファイル名はありませんclean。さらに、タグcleanとしても宣言しました。PHONY

以下の議論は私の問題とは異なります。

Makefile clean が *.o ファイルを削除しない?

4

2 に答える 2

4

Unix 環境では、 のようなワイルドカードの展開は、 のよう*.oな他のプログラムを呼び出す前にシェルによって処理されrmます。私の記憶が正しければ、Tornado には Unix スタイルのシェルが含まれていません。代わりに、コマンドを呼び出すためmakeに使用されていると思われます。Unix シェルのようなワイルドカード展開は行いません。オプションにより、単にto を渡しますが、それは黙って無視されます。cmd.execmd.exe*.orm-f

delそれが問題の原因である場合は、独自のワイルドカード展開を行う Windows コマンドをmake使用するか、rm -rf $(wildcard *.o).

于 2011-11-03T22:11:40.477 に答える
1

オブジェクト宣言の後に makefile に以下を必ず含めてください: all: [your Executive Names] clean

** clean を明示的に宣言する必要があるため、makefile の問題を解決しました。

于 2013-02-02T14:36:15.913 に答える