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

mic*_*ael 18 gcc

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

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

Mic*_*urr 28

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

CPATH
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
OBJC_INCLUDE_PATH
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

  • 发布的答案是差异的摘要。主要的一点是无论编译的语言如何都使用`CPATH`,而`C_INCLUDE_PATH`仅用于C。 (2认同)

Cas*_*bel 8

只需看看实际的gcc文档.这一切都在那里解释.

总结一下:

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