Эквивалент Windows для регулярных выражений Unix

Эквивалент Windows для регулярных выражений Unix

Есть ли замена

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

чтобы я мог сделать что-то вроде этого:

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

(так я поступаю, когда не использую makefile)

на windows я сделал это так:

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

потому что регулярные выражения, похоже, не работают или я не смог найти способ заставить их работать...

Не могли бы вы рассказать, как это сделать в Windows?

решение1

В зависимости от того, когда вы можете использовать абсолютные пути, вы можете использовать следующий фрагмент кода PowerShell:

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

Вы могли бы сократить это до:

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

Это не совсем так коротко и читабельно, как ваш эквивалент для Linux, но это самое близкое, что я могу придумать, чтобы получить желаемый результат.

Если srcу вас плоская иерархия, вы можете использовать:

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

Связанный контент