Makefile 生成文件预处理器指令

Makefile 生成文件预处理器指令,makefile,g++,c-preprocessor,compiler-options,Makefile,G++,C Preprocessor,Compiler Options,我对make文件不是很有经验,我正在尝试在Eclipse(linux)中的make文件中定义一个预处理器变量 这是一项不平凡的任务,因为我似乎遗漏了一些东西 下面您可以找到我的make文件的结构: var_first=g++ all: g++ main_cell.cpp -o hello 通过这种方式,我构建代码,我要做的是在make文件中定义一个变量,然后在代码中用#ifdef、#endif断言该变量 我已经经历了许多组合,但似乎遗漏了一些步骤 请给出一些指针好吗?如果要将预处

我对make文件不是很有经验,我正在尝试在Eclipse(linux)中的make文件中定义一个预处理器变量

这是一项不平凡的任务,因为我似乎遗漏了一些东西

下面您可以找到我的make文件的结构:

 var_first=g++

all:

    g++ main_cell.cpp -o hello
通过这种方式,我构建代码,我要做的是在make文件中定义一个变量,然后在代码中用#ifdef、#endif断言该变量

我已经经历了许多组合,但似乎遗漏了一些步骤


请给出一些指针好吗?

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

例如,如果要将变量
PRE_MY_VAR
定义为
1
,可以编写:

g++ -o myexecutable *.cpp -DPRE_MY_VAR=1
因此,在makefile中,这将是:

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

要在编译时添加定义,请使用
-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文件中首先定义var++