我正在使用一个调用makefile 的shell 来重新编译具有不同#define 选项的同一个项目。
shell 像这样调用生成文件:
make UserDefined="-D SomeDefines -D InputFileName=\"input/In$SIZE.txt\"" -s
其中 $SIZE 是一个数字变量,例如等于 32 这可以很好地编译项目的所有文件,但不是 main.cpp main.cpp 的命令是:
g++ $(CFLAGS) $(Main) \
-I$(CUDA_HOME)/include \
-lpthread -o main.o
$(Main) 是输入文件的路径 $(CUDA_HOME) 是 cuda 库的路径,$(CFLAGS) 是:CFLAGS = -c -Wall $(UserDefined) -std=c++0x
执行此命令时出现以下错误:
../src/main.cpp: In function ‘int main()’:
../src/main.cpp:11:30: error: ‘input’ was not declared in this scope
../src/main.cpp:11:30: error: ‘In32’ was not declared in this scope
main.cpp 文件的第 11 行:
InputSignalFile.open(InputFileName);
我从 shell 和命令行尝试过。那没起效。我也试过“而不是\”。同样的错误。我尝试像这样创建一个新变量:
Var=\"input/In$SIZE.txt\"
接着 :
-D InputFileName=$Var
也没有用。但是当我#define InputFileName "input/In32.txt"
在 main.cpp 中它工作正常。当然我不能这样做,因为我每次都需要更改数字。有什么帮助吗??