GCC / G ++在编译期间查找.h文件的环境变量是什么:LIBRARY_PATH,C_PATH,C_INCLUDE_PATH或CPLUS_PATH?

时间:2010-03-23 03:08:03

标签: gcc

GCC / G ++是否有环境变量在编译期间查找.h文件?

我谷歌我的问题,有人说LIBRARY_PATH,C_PATH,C_INCLUDE_PATH,CPLUS_PATH,那么它是哪一个?

3 个答案:

答案 0 :(得分:25)

来自:http://gcc.gnu.org/onlinedocs/cpp/Environment-Variables.html

CPATH
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
OBJC_INCLUDE_PATH
     

每个变量的值是一个由特殊字符分隔的目录列表,与PATH非常相似,可以在其中查找头文件。特殊字符PATH_SEPARATOR与目标有关,并在GCC构建时确定。对于基于Microsoft Windows的目标,它是一个分号,对于几乎所有其他目标,它都是冒号。

     

CPATH指定要搜索的目录列表,就像使用-I指定的那样,但是在命令行上使用-I选项指定的任何路径之后。无论预处理哪种语言,都使用此环境变量。

     

其余环境变量仅在预处理指定的特定语言时适用。每个指定要搜索的目录列表,就像使用-isystem指定一样,但是在命令行上使用-isystem选项给出的任何路径之后。

     

在所有这些变量中,空元素指示编译器搜索其当前工作目录。空元素可以出现在路径的开头或结尾。例如,如果CPATH的值为:/special/include,则其效果与“-I. -I/special/include”相同。

我认为大多数设置都避免使用环境变量,而是使用-I选项在命令行中传递include目录。通常会有一个makefile变量或一个IDE设置来控制传递给-I的内容。

答案 1 :(得分:7)

看看actual gcc documentation。这一切都在那里解释。

总结:

  • LIBRARY_PATH用于链接器,不用于头文件(在查找-l选项请求的库时使用)
  • CPATH指定要查找头文件的目录(如-I选项)
  • C_INCLUDE_PATH和CPLUS_INCLUDE_PATH类似于CPATH,但分别用于C / C ++。

答案 2 :(得分:2)

另外,如果您不确定系统中正在检查哪些路径,则可以使用

cpp -v

这将告诉您正在检查哪些路径.h文件,输出包括部分:

#include "..." search starts here:
#include <...> search starts here: