Makefile 预处理指令

4

我对make文件不是很熟悉,正在尝试在我的make文件中定义一个预处理器变量,在Eclipse(Linux)中。

这似乎是一个不容易的任务,因为我好像漏掉了一些东西...

下面是我的make文件结构:

 var_first=g++

all:

    g++ main_cell.cpp -o hello

我正在构建代码,我的目标是在我的make文件中定义一个变量,然后在我的代码中使用#ifdef和#endif进行断言。

我已经尝试了很多组合,但好像还缺少一些步骤...

请给予一些指引,谢谢。

2个回答

5

在编译时添加定义,可以使用-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++

1
如果您想直接将预处理器变量传递给编译器,可以使用-D标志。
例如,如果您想将变量PRE_MY_VAR定义为1,则可以编写以下内容:
g++ -o myexecutable *.cpp -DPRE_MY_VAR=1

在你的makefile中,这将是这样的:
all:
    g++ main_cell.cpp -o hello -Dvar_first="g++"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接