make file预处理程序指令

时间:2015-06-01 12:08:59

标签: makefile g++ c-preprocessor compiler-options

我对make文件不是很熟悉,并且我想在Eclipse(linux)中的make文件中定义一个预处理器变量。

这显然是一项非常重要的任务,因为它似乎缺少一些东西......

Bellow你可以找到我的make文件的结构:

 var_first=g++

all:

    g++ main_cell.cpp -o hello

以这种方式构建我的代码,我想要做的是在我的make文件中定义一个变量,然后在我的代码中用#ifdef,#endif声明它。

我经历过多种组合,但似乎错过了一些步骤......

你能指点一下吗?

2 个答案:

答案 0 :(得分:1)

如果要将预处理器变量直接传递给编译器,则使用-D标志。

E.g。您想要将变量PRE_MY_VAR定义为1,您可以写:

g++ -o myexecutable *.cpp -DPRE_MY_VAR=1

所以在你的makefile中这将是:

all:
    g++ main_cell.cpp -o hello -Dvar_first="g++"

答案 1 :(得分: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++