Equivalente de Windows para expresiones regulares de Unix

Equivalente de Windows para expresiones regulares de Unix

¿Existe un reemplazo para

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

para poder hacer algo como esto:

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

(la forma en que voy cuando no uso ningún archivo MAKE)

En Windows lo hice de esta manera:

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

porque las expresiones regulares parecen no funcionar o no pude encontrar una manera de hacerlas funcionar...

¿Podrías decirme cómo hacerlo en Windows?

Respuesta1

Dependiendo de cuándo pueda usar rutas absolutas, puede usar el siguiente código de PowerShell:

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

Es posible que puedas acortarlo a:

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

Esto no es exactamente tan breve ni tan legible como su equivalente de Linux, pero es lo más cercano que se me ocurre para llegar al resultado deseado.

Si srctiene una jerarquía plana, puede usar:

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

información relacionada