21 Stimmen

Was ist der Unterschied zwischen "machen" und "alles machen"?

Ich habe ein Makefile mit der folgenden Struktur (Arbeitsbeispiel).

.PHONY: image flashcard put-files

put-files:
    @echo "=== put-files"

image:
    @echo "=== image"

flashcard:
    @echo "=== flashcard"

all: put-files image flashcard
    @echo "Done"

Ich erwarte, dass eine einfache make alle drei Ziele bauen würde, aber das ist nicht der Fall:

% make
=== put-files

Wenn ich jedoch das Ziel explizit angebe, werden auch die Abhängigkeiten erstellt:

% make all
=== put-files
=== image
=== flashcard
Done

Was mache ich falsch?

31voto

koan Punkte 3468

Eine einfache make wird das erste Ziel in der Liste erstellt, das ist put-files .

make all wird das Ziel erstellen all . Wenn Sie wollen all als Standard festgelegt haben, dann verschieben Sie sie an den Anfang der Liste.

Um zu verstehen, was die .PHONY tut, siehe http://www.gnu.org/s/hello/manual/make/Phony-Targets.html

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X