2017-12-10 50 views
0

私はcプログラム用のmakefileを作った。何らかの理由で私の「クリーン」が機能していません。ここに私のメイクを少しです:'make clean'は動作しません

CC=gcc 
FLAGS=-c -Wall -I. 
CLEANC=rm -rf *.o 

move.o: move.c 
    $(CC) $(FLAGS) move.c 
/*Lot more codes like this^^^*/ 

clean: 
    $(CLEANC) 

私が実行すると、コマンドプロンプトで「クリーン作る」、私は次のことを示しています:

rm -rf *.o 
process_begin: CreateProcess(NULL, rm -rf *.o, ...) failed. 
make (e=2): The system cannot find the file specified. 
makefile:116: recipe for target 'clean' failed 
make: *** [clean] Error 2 

私は私は何を把握することはできません間違っている。私はCLEANCを

rm -f *.o 
rm *.o 
rm *o 
rm -f *.o test.exe //test.exe is executable 

に変更しようとしましたが、私が何を試しても同じエラーが表示されました。私は本当に助けを使うことができました。前もって感謝します。

+0

これを再現できません。あなたのMakefileはGNU Make 3.81とGNU Make 4.2.1で完璧に動作します。 –

+0

どのようなOSですか?コマンドラインで 'rm -f * .o'を実行するとどうなりますか? – Beta

+0

それは私に同じエラーを与えています。私はMinGWとMSYSがインストールされたWindows 10を使用しています。 'make'と 'make compile'は完全に動作しますが、何らかの理由で 'make clean'は常に私に同じエラーを与えます。 – ioaop

答えて

2

エラー出力に表示されるCreateProcessから判断すると、Windowsではmakeが実行されているものとします。

これは、rmコマンドがないことを意味します。代わりにdelを使用し、-rfフラグもそれに応じて調整する必要があります。

+2

Windows用の同等の機能は 'del/Q/S * .o'だと思います。オブジェクトファイルは' .o'(つまりmingw GCC)で、 '.obj'(ビジュアルスタジオ)ではないと仮定します。 – lockcmpxchg8b

+0

ありがとう!両方の答えが働いた!私は 'rm'コマンドは' make'が完璧にうまく動作したので動作すると仮定しました。 – ioaop

+0

まだWindowsで 'rm'コマンドを使いたいのであれば、Cygwinを見てみることをお勧めします。 – igagis

関連する問題