2010-12-26 17 views
4

makeを実行したときに生成される.oファイルを削除/消去しないのはなぜですか?* .oファイルを削除しないでください。

# UNIX Makefile 

CXX = g++ 
LD = g++ 
CXXFLAGS = -g 

testlfunction: lfunction.o lfunctionlist.o lprocessor.o testlfunction.o 
    $(LD) -o [email protected] $^ 

clean: 
    rm *.o testlfunction 

それは

$(RM) *.o testlfunction 

するが、それはまた、うまくいきませんでした使用する前に、(

なぜこれがある

+0

エラーが発生しますか? –

+0

いいえ、すべて正常です... rmと$(RM)の違いは何ですか? – nacho4d

+3

'rm'と' $(RM) 'の違いは' RM = rm -f'です。リストされたファイルの一つが見つからなければ失敗しません。が表示されない場合、クリーン操作は失敗します。たとえば、 'make clean all'を実行しても' clean'が失敗した場合、 'all'フェーズは構築されません。 –

答えて

4

きれいにする」を実行、本当に何が起こるかを確認するには?そのコマンドの出力を調べる。

  1. それは何ですか?その後、現在のディレクトリに "clean"というファイルが存在する可能性があります。それを取り外してもう一度やり直してください。
  2. "rm ..."で始まりますか?それは普通のようです。
  3. それ以外の場合は、正確な出力を教えてください。

コマンドが実際に実行されているかどうかを確認するには、「rm」コマンドの前後に「echo」コマンドを挿入します。彼らは処刑されますか?

最後に、タブ文字とスペースを区別しましたか? Makefileではその違いが重要です。コマンドはタブを使用してインデントする必要があります。

6

make cleanは、ディレクトリにcleanというファイルがあり、おそらくmake -t cleanを実行した結果、何かを実行するのに失敗する可能性があります。これによりファイルが作成されるので、次にmake cleanを実行したときに最新の状態になるでしょう。依存関係がないため、アクションを実行する理由はありません。

.PHONY: clean 

cleanの作成からmake -tを停止し、アクションが実行されていることを確認します:

あなたがラインを持っていることを確認し、GNU makeを使用した場合

関連する問題