2012-03-27 11 views
14

Wciąż otrzymuję ten błąd:make: *** Brak reguły, aby cel "wszystko". Zatrzymaj

make: *** No rule to make target `all'. Stop. 

Nawet mój plik make wygląda następująco:

CC=gcc 
CFLAGS=-c -Wall 

all: build 

build: inputText.o outputText.o main.o 
    gcc main.o inputText.o outputText.o -o main 

main.o: main.c 
    $(CC) $(CFLAGS) main.c -o main.o 

inputText.o: inputText.c 
    $(CC) $(CFLAGS) inputText.c -o inputText.o 

outputText.o: outputText.c 
    $(CC) $(CFLAGS) outputText.c -o outputText.o 

Tak nie powinno być miejsca na zakładkę pod cel i nie ma w moim pliku make.

Mogę go uruchomić, jeśli spróbuję jednego z celów, takich jak main.o, inputText.o i outputText.o, ale nie może z kompilacji lub wszystkich.

EDIT: Właśnie losowo próbowali uruchomiony zrobić i mówi mu plik za pomocą następującego polecenia:

make -f make 

To działa, ale dlaczego nie po prostu wpisując uczynić pracę?

+0

Nie można repro z tym, co masz tutaj. Upewnij się, że w Twoim pliku nie ma śmiesznych znaków (skopiuj to, co tu masz, i zamień spacje na tabulatory). – Mat

+4

Twój plik makefile powinien mieć nazwę 'makefile', a nie' make'. –

+0

@PaulR Ahh, który naprawił to. W moich notatkach nie było to zbyt dobrze wyjaśnione, że musiało zostać nazwane makefile. – Dean

Odpowiedz

16

Twój plik Makefile powinien być idealnie nazwany makefile, a nie make. Zauważ, że możesz wywołać swój plik makefile, jak tylko chcesz, ale kiedy już go znalazłeś, potrzebujesz opcji -f z make, aby określić nazwę pliku Makefile. Używanie domyślnej nazwy makefile po prostu ułatwia życie.

Powiązane problemy