make 文件预处理器指令

Riz*_*ias 4 makefile g++ compiler-options c-preprocessor

我对 make 文件不太有经验,并且正在尝试在 Eclipse (linux) 中的 make 文件中定义预处理器变量。

这变成了一项不平凡的任务,因为它似乎遗漏了一些东西......

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

 var_first=g++

all:

    g++ main_cell.cpp -o hello
Run Code Online (Sandbox Code Playgroud)

以这种方式构建我的代码,我想要做的是在我的 make 文件中定义一个变量,然后在我的代码中使用 #ifdef、#endif 对其进行断言。

我已经经历了无数的组合,但似乎缺少一些步骤......

您能给一些指点吗?

mti*_*nic 5

要在编译时添加定义,请使用-Dg++ 选项。像这样:

g++ -DMyDefine=123 main_cell.cpp -o hello
Run Code Online (Sandbox Code Playgroud)

现在main_cell.cpp你可以这样做:

#if MyDefine == 123
   doStuff();
#endif
Run Code Online (Sandbox Code Playgroud)

要为此使用 makefile 变量,请执行以下操作:

all: g++ main_cell.cpp -o hello -Dvar_first=$(var_first)
Run Code Online (Sandbox Code Playgroud)

这相当于#define var_first g++.cpp 文件中的内容