42 Stimmen

Platzhalter, um eine Liste aller Verzeichnisse zu erhalten

In meinem Makefile muss ich eine Liste aller Verzeichnisse erhalten, die in einem anderen Verzeichnis vorhanden sind.

Um eine Liste aller Verzeichnisse im selben Ordner wie mein Makefile zu erhalten, verwende ich:

DIRECTORIES = $(wildcard */)

all:
    echo $(DIRECTORIES)

was gut funktioniert und mir die gewünschte Liste gibt. Wenn ich jedoch eine Liste aller Verzeichnisse in einem anderen Verzeichnis haben möchte, benutze ich

DIRECTORIES = $(wildcard ../Test/*/)

all:
    echo $(DIRECTORIES)

bekomme ich eine Liste ALLER Dateien (mit Pfaden) in diesem Verzeichnis, einschließlich .h und .cpp Dateien.

Irgendwelche Vorschläge, warum das passiert und wie man es beheben kann? Andere Lösungen, um die Liste zu erhalten, sind ebenfalls willkommen.

52voto

Lei Mou Punkte 2462

Verwenden Sie die Funktionen sort und dir zusammen mit wildcard:

DIRECTORY = $(sort $(dir $(wildcard ../Test/*/)))

Aus dem GNU make Handbuch:

$(dir names...) Extrahiert den Verzeichnisteil jedes Dateinamens in den Namen. Der Verzeichnisteil des Dateinamens ist alles bis zum (einschließlich) letzten Schrägstrich darin. Wenn der Dateiname keinen Schrägstrich enthält, ist der Verzeichnisanteil der String „./“.

$(sort list) Sortiert die Wörter der Liste in lexikalischer Reihenfolge, entfernt doppelte Wörter. Die Ausgabe ist eine Liste von durch einzelne Leerzeichen getrennten Wörtern.

Schauen Sie sich auch die zweite und die dritte Methode in diesem Artikel an: Automatisch eine Liste von Verzeichnissen erstellen

19voto

regulatethis Punkte 2292

Versuchen Sie:

$(shell find  -maxdepth 1 -type d)

welches Ihnen die Liste der Verzeichnisse innerhalb eines bestimmten Verzeichnisses gibt, ohne in Unterverzeichnisse zu gehen. Sie müssen möglicherweise diese Liste bereinigen, da sie . und ./ vor jedem aufgeführten Verzeichnis enthält.

7voto

yuanjianpeng Punkte 188

Verwendung:

$(wildcard ../Test/*/.)

Dies funktioniert gut.

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