如何为相同的预处理器变量编译 C++
How to compile C++ for the same preprocesor variable
在main.c++中我定义了几个预处理器变量。
#ifndef FIRST
#define FIRST "./path/for/output/files"
#endif
#ifndef SECOND
#define SECOND 0.0125
#endif
#ifndef THIRD
#define THIRD "./input_file.mesh"
#endif
我必须通过改变三个预处理器宏来编译这个 .cpp。为此,我尝试制作一个带有 for 循环的 bash 文件来改变这些宏所采用的值,即:
#!/bin/bash
for i in *.mesh
do
g++ -Ofast -fopenmp main.cpp eig3.cpp vema.cpp -o main10 -DFIRST=\"\.\/$i\" -DSECOND=0.0125 -DTHIRD=\'\"\.\/$i\"\'
done
这个循环不断报错,不识别输入文件,也不识别输出文件夹。我想我犯了很多错误,我是C ++的新手,我还是有点迷茫。
我想知道是否有可能用每个参数的许多不同值来编译这段代码。谢谢!
如果你真的不想把程序改那么多,编译一次如下:
g++ -Ofast -fopenmp main.cpp eig3.cpp vema.cpp -o main10 -DFIRST='getenv("OUTPUT")' -DSECOND=0.0125 -DTHIRD='getenv("INPUT")'
并按如下方式调用:
for i in *.mesh; do
INPUT=./$i OUTPUT=./path/for/output/files ./main10
done
在main.c++中我定义了几个预处理器变量。
#ifndef FIRST
#define FIRST "./path/for/output/files"
#endif
#ifndef SECOND
#define SECOND 0.0125
#endif
#ifndef THIRD
#define THIRD "./input_file.mesh"
#endif
我必须通过改变三个预处理器宏来编译这个 .cpp。为此,我尝试制作一个带有 for 循环的 bash 文件来改变这些宏所采用的值,即:
#!/bin/bash
for i in *.mesh
do
g++ -Ofast -fopenmp main.cpp eig3.cpp vema.cpp -o main10 -DFIRST=\"\.\/$i\" -DSECOND=0.0125 -DTHIRD=\'\"\.\/$i\"\'
done
这个循环不断报错,不识别输入文件,也不识别输出文件夹。我想我犯了很多错误,我是C ++的新手,我还是有点迷茫。
我想知道是否有可能用每个参数的许多不同值来编译这段代码。谢谢!
如果你真的不想把程序改那么多,编译一次如下:
g++ -Ofast -fopenmp main.cpp eig3.cpp vema.cpp -o main10 -DFIRST='getenv("OUTPUT")' -DSECOND=0.0125 -DTHIRD='getenv("INPUT")'
并按如下方式调用:
for i in *.mesh; do
INPUT=./$i OUTPUT=./path/for/output/files ./main10
done