如何使用g ++编译除一个以外的所有.cpp文件?

时间:2019-02-27 14:47:27

标签: bash g++

要编译我的源目录中的所有C ++文件,请运行

g++ -std=c++17 ../src/*.cpp -o ../out/a.out

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

3 个答案:

答案 0 :(得分:2)

重击:

shopt -s extglob
g++ -std=c++17 ../src/!(main).cpp -o ../out/a.out

ref:https://www.gnu.org/software/bash/manual/bash.html#Pattern-Matching

答案 1 :(得分:1)

for f in $(find /path/to/files -name "*.cpp" ! -name "main.cpp")
do
  g++ -std=c++17 path/to/files/"$f" -o /path/to/out/....
done

答案 2 :(得分:1)

我们可以将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

或者,using GNU grep and mapfile

mapfile -d $'\0' -t files < <(printf '%s\0' ../src/*.cpp | grep -zv '/main\.cpp$')
g++ -std=c++17 "${files[@]}" -o ../out/a.out