makefile中-DHAVE_CONFIG_H的含义

makefile中-DHAVE_CONFIG_H的含义,makefile,Makefile,我开始学习makefile。从输出结果来看,我看到了很多情况: g++ -DHAVE_CONFIG_H -I ... 什么是-DHAVE\u CONFIG\u H?此编译选项的功能是什么?所有-DHAVE\u CONFIG\u H所做的就是定义预处理器令牌HAVE\u CONFIG\u H,就像在每个源文件的开头定义HAVE\u CONFIG\u H一样 至于它的用途,这完全取决于源文件的其余部分(以及它包含的所有内容)。这是你应该寻找的地方,以计算出它的效果 看起来这可能意味着头文件conf

我开始学习makefile。从输出结果来看,我看到了很多情况:

g++ -DHAVE_CONFIG_H -I ...

什么是
-DHAVE\u CONFIG\u H
?此编译选项的功能是什么?

所有
-DHAVE\u CONFIG\u H
所做的就是定义预处理器令牌
HAVE\u CONFIG\u H
,就像在每个源文件的开头定义HAVE\u CONFIG\u H一样

至于它的用途,这完全取决于源文件的其余部分(以及它包含的所有内容)。这是你应该寻找的地方,以计算出它的效果

看起来这可能意味着头文件
config.h
可用并且应该包括在内,在这种情况下,您可能会在源文件的某个地方找到以下序列:

#ifdef HAVE_CONFIG_H
    #include "config.h"
#endif

当您说头文件可用时,它将包括头文件。然而,这只是我的假设,并不是确切的效果,我会使用这样一个预处理器符号来做什么。

@Werner,这取决于上下文。如果是“DEFS=-c-O2”,那只是定义了一个可以稍后使用的替换,例如,“gcc$(DEFS)blah blah”变成了“gcc-c-O2 blah blah blah blah”。可以设置AutoConf以生成
config.h
文件并定义
HAVE_-config_h