c++ - 如何为相同的预处理器变量编译 C++
问题描述
在 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
推荐阅读
- snowflake-cloud-data-platform - 如何根据雪花中的返回值提交/回滚存储过程?
- ggplot2 - Getting the zoom ratio in ggsave with transparent background
- spring-boot - Netbeans 11,如何从 Springboot 应用程序生成战争文件
- excel - 需要比较两列并用一张表中的数据完成第三列
- javascript - 请帮助我在 javascript 中构建 reg ex
- node.js - 如何获取服务器的成员数?
- api - 无法访问在应用程序脚本中制作的 API 内容
- python - 如果 GridSearchCV 给出了一些排名为 1 的估计器,它将选择哪一个作为最佳估计器?
- javascript - React 的视差效果
- oracle - 安装oracle数据库速成版报错/u01/app/oracle/product/11.2.0/xe/bin/nls_lang.sh: No such file or directory