Как скомпилировать C ++ для той же переменной препроцессора - PullRequest
0 голосов
/ 27 апреля 2020

В 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, изменив три макроса препроцессора. Чтобы сделать это, я попытался создать файл bash с параметром для l oop, чтобы изменить значения этих макросов, а именно:

#!/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

Этот l oop постоянно сообщает об ошибке, он не распознает входной файл и выходную папку. Я предполагаю, что я делаю много ошибок, я новичок в C ++ и все еще немного растерялся.

Я хотел бы знать, есть ли возможность скомпилировать этот код со многими различными значениями для каждого параметра. Спасибо!

1 Ответ

0 голосов
/ 27 апреля 2020

Если вы действительно не хотите слишком сильно изменять программу, скомпилируйте ее один раз следующим образом:

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
...