web-dev-qa-db-ja.com

「make clean」の結果は「ターゲットを「clean」にするルールはありません」

Ubuntu 10.04を実行しています。 make cleanを実行するたびに、次のようになります:

make:***ターゲットを「クリーン」にするルールはありません。やめる。

ここに私のメイクファイルがあります:

CC = gcc
CFLAGS = -g -pedantic -O0 -std=gnu99 -m32 -Wall
PROGRAMS = digitreversal
all : $(PROGRAMS)
digitreversal : digitreversal.o
       $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
.PHONY: clean
clean:
       @rm -f $(PROGRAMS) *.o core

なぜ機能しないのでしょうか?

編集:それは次のように思えます:

make -f Makefile.txt clean

動作します。今:毎回-f Makefile.txtを行う必要がないように変更する設定はありますか?

20
jasonbogd

メイクファイルの名前が「メイクファイル」または「メイクファイル」ではないようです。異なる場合は、「abc」と言って「make -f abc clean」を実行してみてください

21
Siddique

私はあなたが今までにそれを理解していると思います。答えは、最初のメール自体に隠されています。

makeコマンドはデフォルトで、入力ファイルとしてmakefileMakefile、およびGNUMakefileを探し、Makefile.txtフォルダー内。ファイル拡張子(.txt)そして動作するはずです。

ファイルの名前がGNUMakefile、makefile、またはMakefileであることを確認してください。

他の名前が付けられている場合(および名前を変更したくない場合)は、以下を試してください。

make -f othermakefilename clean

2
Spaceghost

これは私のために動作します。タブでインデントしますか?

CC = gcc
CFLAGS = -g -pedantic -O0 -std=gnu99 -m32 -Wall
PROGRAMS = digitreversal
all : $(PROGRAMS)
digitreversal : digitreversal.o
    [tab]$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)

.PHONY: clean
clean:
    [tab]@rm -f $(PROGRAMS) *.o core
1
Simone