
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 src
eine flache Hierarchie hat, könnten Sie Folgendes verwenden:
gcc -std=c++14 -I include -o bin/main src/*.cpp