Bash 如何使用g++编译除一个以外的所有.cpp文件? < >编译我的源目录中的所有C++文件,运行< /p> g++ -std=c++17 ../src/*.cpp -o ../out/a.out

Bash 如何使用g++编译除一个以外的所有.cpp文件? < >编译我的源目录中的所有C++文件,运行< /p> g++ -std=c++17 ../src/*.cpp -o ../out/a.out,bash,g++,Bash,G++,如何编译给定目录中除main.cpp以外的所有cpp文件?我们可以将glob过滤到Bash数组中: unset files for i in ../src/*.cpp do test "$i" = '../src/main.cpp' || files+=("$i") done g++ -std=c++17 "${files[@]}" -o ../out/a.out 或 我们可以将glob过滤到Bash数组中: unset files for i in ../src/*.cpp do test

如何编译给定目录中除main.cpp以外的所有cpp文件?

我们可以将glob过滤到Bash数组中:

unset files
for i in ../src/*.cpp
do test "$i" = '../src/main.cpp' || files+=("$i")
done

g++ -std=c++17 "${files[@]}" -o ../out/a.out


我们可以将glob过滤到Bash数组中:

unset files
for i in ../src/*.cpp
do test "$i" = '../src/main.cpp' || files+=("$i")
done

g++ -std=c++17 "${files[@]}" -o ../out/a.out

狂欢节:

参考:bash:


ref:

我们可以全局化为一个数组files=../src/*.cpp,然后我们可以全局化为一个数组files=../src/*.cpp,然后我知道有一个extglob解决方案!只是不太记得语法。谢谢shopt-s extglob到底做什么?它支持将普通glob通配符扩展为更接近正则表达式的扩展模式。阅读我为您链接的手册部分。我知道有一个extglob解决方案!只是不太记得语法。谢谢shopt-s extglob到底做什么?它支持将普通glob通配符扩展为更接近正则表达式的扩展模式。请阅读我为您链接的手册的那一部分。这比一个cmake或make文件要多个字符,这比一个cmake或make文件要多个字符
mapfile -d $'\0' -t files < <(printf '%s\0' ../src/*.cpp | grep -zv '/main\.cpp$')
g++ -std=c++17 "${files[@]}" -o ../out/a.out
shopt -s extglob
g++ -std=c++17 ../src/!(main).cpp -o ../out/a.out