
Есть ли замена
**/*.*
**/*.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