2016-06-13 10 views
0

In einem GNU-Makefile, wenn ich * in einer Voraussetzung oder $(wildcard) in einer Zuweisung verwende, wird es Shell-Erweiterung verwenden, um übereinstimmende Dateien zu finden.Wildcard-Übereinstimmung auf falschen Zielen

Gibt es eine Möglichkeit, das Äquivalent für falsche Ziele zu tun? Zum Beispiel:

.PHONY: compile-1 compile-2 
compile-all: compile-* 

Dies ist ähnlich this question aber ich möchte nicht manuell müssen die Ziele, wie in AVAILABLE_MODELS Liste.

"Nein, Sie müssen sie auflisten" ist eine akzeptable Antwort.

+0

Im allgemeinen Fall möchten Sie möglicherweise alle Ziele aufzählen. Das ist leider nicht ganz trivial. Siehe http://stackoverflow.com/questions/4219255/how-do-you-get-the-list-of-targets-in-a-makefile – tripleee

Antwort

1

Sie müssen sie nicht wirklich auflisten. Sie können sie von ihren Unterschieden berechnen, ob das ausreichend ist anders: -

compiles := $(patsubst %,compile-%,1 2) 

PHONY: $(compiles) 

compile-all: $(compiles) 

8.2 Functions for String Substitution and Analysis

jedoch sehen, wenn compile-N ein Pseudoziel für einige Compilation ist sollten Sie nicht zu haben ein falsches Ziel, dass überhaupt. Die Zusammenstellung macht echte Dateien, und sie sind die Ziele, keine Notwendigkeit für gefälschte.

Auf der anderen Seite sollte compile-all klar sollte ein falsches Ziel sein.

+0

'Kompilieren-N' sind keine echten Dateien – OrangeDog

+0

@OrangeDog. Ich weiß das zu schätzen, vermutete aber, dass jedes dieser Rezepte * eine echte Datei oder Dateien erzeugt, die routinemäßig ohne falsche Ziele erstellt würden. Nur eine Ahnung, natürlich. –

Verwandte Themen