2016-04-25 12 views
0

Bei einem Makefile VoraussetzungFilter Make-Datei Voraussetzungen

PY_FILES := $(shell find . -type f -name *.py) 

my_target: $(PY_FILES) 
    do_something $(PY_FILES) 

Ist es möglich, do_something auf einer Teilmenge davon nennen heißt ausschließen alle Python-Dateien, die zum Beispiel mit einem Muster übereinstimmen */test/*?

Mein Verständnis ist, dass $(filter-out pattern, text) kann etwas ähnliches tun, aber Muster muss eine Liste von Dateien sein, die ich ausschließen möchte.

In diesem Fall konnte ich auch find mit -not und das Ergebnis auf eine andere Voraussetzung speichern das ist, was ich zu vermeiden versuche - Ich will die PY_FILES prereq wiederzuverwenden.

+0

'pattern' muss ein * pattern * sein, das mit Dateien übereinstimmt, die Sie ausschließen möchten. Unglücklicherweise unterstützen Muster nur ein einzelnes Wildcard-Element, so dass Sie '' (filter-out) '' ein Muster, das mit '*/test/*' übereinstimmt, nicht leicht finden können. Sie * können * die mit 'Finden' leicht ignorieren, obwohl Sie angegeben haben. –

Antwort

0

Es gibt keine gute eingebaute Möglichkeit, ein */test/* Stilmuster mit make built-ins zu vergleichen. Die Musterabstimmung ist einfach nicht so anspruchsvoll.

Sie könnten so etwas versuchen, aber das Teilen der Dateien bei find Zeit wird wahrscheinlich besser und am Ende nützlicher sein.

+0

@ComeRaczy Danke für den Poke auf, aber die Verwendung von '$ (if)' ist einfacher als das erneute Filtern. –

Verwandte Themen