2017-01-04 4 views
-1

So ist der Kern des Problems, dass ich mein Makefile sowohl unter Linux als auch Windows verwenden möchte. Wenn ich die gemeinsame CFILES := $(shell find $(SDIR) -name '*.cpp') meine .cpp Dateien finden, ruft das Shell Escape unter Windows eine Umgebung auf, die die Tatsache ignoriert, dass das MSYS64/bin das erste Verzeichnis ist, nach Programmen in meinem PATH zu suchen, und den internen Suchbefehl von Windows verwendet. das tut etwas ganz anderes als das unix-find-programm.Makefile finde alle * .cpp und * .h Dateien bricht in Windows

Also muß ich entweder

a) einen Weg finden, dass die Marke Shell-Escape unter Windows in der Tat die "unixary" findet nicht verwendet, dass in meinem PATH gefunden wird

oder

b) Finden Sie einen Weg, alle Dateien ohne Shell-Escape zu finden ...

+0

Versuchen 'CFILES: = $ (Platzhalter $ (SDIR)/* CPP.)'. Aber das wird nicht in Unterverzeichnissen rekurrieren. –

+0

Leider ist das etwas, was ich brauche, da das Projekt nicht managbar sein könnte sonst. – salbeira

+0

Können Sie dem aktuellen Verzeichnis oder einem anderen Verzeichnis, das sich auf dem Pfad befindet, Dateien hinzufügen? Sie könnten 'myfind.bat' und' myfind' haben, wo der erste 'MSYS64 \ bin \ find.exe' aufruft und letzterer nur' find' aufruft. –

Antwort

0

Versuchen Sie, folgen Sie und entfernen Sie Notdir-Funktion, wenn Sie auch Verzeichnisse möchten.

YOUR_DIRECTORY = Ihr \ Directory \ Wo \ \ to \ FILES finden

YOUR_DIRECTORY_FILES = $ (notdir $ (shell dir/AD/B/S $ (YOUR_DIRECTORY) *. Cpp))

zu Stellen Sie sicher,

$ {info Dateien $ (YOUR_DIRECTORY_FILES)}

+0

Das klang vielversprechend, aber aus irgendeinem Grund werden die Argumente für dir als Verzeichnisse interpretiert, während der Befehl im Terminal selbst das korrekte Ergebnis liefert – salbeira

+0

überprüfe nur, ob die Shell auf sh.exe zeigt (benutze $ {info $ (SHELL)) Wenn nicht, dann verschiebe in der Pfadvariablen das Verzeichnis der aktuellen Shell (die du als Ausgabe erhältst) und starte die Eingabeaufforderung erneut. Dies ist getestet, wie es für mich in letzter Zeit funktioniert hat –

Verwandte Themen