【问题标题】:make file preprocessor directive制作文件预处理器指令
【发布时间】:2015-06-01 12:08:58
【问题描述】:
我对制作文件不是很有经验,我正在尝试在我的制作文件中定义一个预处理器变量,在 Eclipse (linux) 中。
这是一项不平凡的任务,因为它似乎缺少一些东西......
您可以在下面找到我的 make 文件的结构:
var_first=g++
all:
g++ main_cell.cpp -o hello
以这种方式构建我的代码,我想做的是在我的 make 文件中定义一个变量,然后在我的代码中用 #ifdef,#endif 断言。
我经历了许多组合,但似乎缺少一些步骤......
能否指点一下?
【问题讨论】:
标签:
makefile
g++
c-preprocessor
compiler-options
【解决方案1】:
要在编译时添加定义,请使用-D g++ 选项。像这样:
g++ -DMyDefine=123 main_cell.cpp -o hello
现在在main_cell.cpp 你可以这样做:
#if MyDefine == 123
doStuff();
#endif
要为此使用 makefile 变量,请执行以下操作:
all: g++ main_cell.cpp -o hello -Dvar_first=$(var_first)
相当于.cpp文件中的#define var_first g++
【解决方案2】:
如果您想将预处理器变量直接传递给编译器,请使用-D 标志。
例如要将变量PRE_MY_VAR定义为1,可以这样写:
g++ -o myexecutable *.cpp -DPRE_MY_VAR=1
所以在你的 makefile 中应该是:
all:
g++ main_cell.cpp -o hello -Dvar_first="g++"