如何针对同一个前置程序变量编译C++?

问题描述 投票:0回答:1

在main.c ++中,我定义了几个预处理程序变量,我必须通过改变三个预处理程序宏来编译这个.cpp。

#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++新手,还是有点迷茫。

我想知道是否有可能在编译这段代码时,每个参数都有很多不同的值。谢谢你

c++ bash compiler-errors macros c-preprocessor
1个回答
0
投票

如果你 真的 不想把程序改得那么厉害,就按下面的方法编译一次。

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
© www.soinside.com 2019 - 2024. All rights reserved.