Windows-Äquivalent für Unix-reguläre Ausdrücke

Windows-Äquivalent für Unix-reguläre Ausdrücke

Gibt es einen Ersatz für

**/*.*
**/*.cpp

damit ich so etwas machen kann:

gcc -std=c++14 -I ./include/ -o ./bin/main ./src/**/*.cpp

(so gehe ich vor, wenn ich kein Makefile verwende)

Unter Windows habe ich es folgendermaßen gemacht:

gcc -std=c++14 -I include -o bin/main src/main.cpp src/Sth.cpp src/SthEl.cpp

weil reguläre Ausdrücke nicht zu funktionieren scheinen oder ich keine Möglichkeit gefunden habe, sie zum Laufen zu bringen ...

Können Sie mir sagen, wie das unter Windows geht?

Antwort1

Abhängig davon, wann Sie absolute Pfade verwenden können, könnten Sie den folgenden PowerShell-Code verwenden:

$files = (Get-ChildItem -Recurse -Path ./src *.cpp | %{echo $_.FullName}) -Join " "
gcc -std=c++14 -I include -o bin/main $files

Möglicherweise können Sie dies folgendermaßen verkürzen:

gcc -std=c++14 -I include -o bin/main ((Get-ChildItem -Recurse -Path ./src *.cpp | %{echo $_.FullName}) -Join " ")

Dies ist nicht ganz so kurz oder lesbar wie Ihr Linux-Äquivalent, aber meiner Meinung nach das Beste, um Ihr gewünschtes Ergebnis zu erzielen.

Wenn Ihr Unternehmen srceine flache Hierarchie hat, könnten Sie Folgendes verwenden:

gcc -std=c++14 -I include -o bin/main src/*.cpp

verwandte Informationen