使用命令行选项包括头文件吗?


78

是否可以在命令行中指定要包含的其他头文件(使用GCC 4 / C ++)?

或者除了#include以外,还有其他方法可以包含文件吗?

背景:我正在尝试在自己的PC上编译大型代码库。该代码通常是在具有复杂构建系统的集群中编译的(SoftRelTools是否有人吗?),该系统与操作系统交织在一起,因此几乎不可能将其安装在其他位置(字面上有数百个makefile和shell脚本,而且很难网络驱动器的编码路径)。但是,实际的代码相当简单,并且可以很好地编译,但是它缺少很多包含(主要是la“ include <vector>”和“ include <math.h>”)。我猜想构建系统通常会解决这个问题,但是我必须遍历代码并手动添加包含,这是我希望避免的。

Answers:


88

找到了-include选项。这是你想要的吗?

-include文件

处理文件,就好像“ #include“ file”“作为主源文件的第一行出现一样。但是,搜索文件的第一个目录是预处理程序的工作目录,而不是包含主源文件的目录。如果未在此处找到,则照常在“ #include“ ...”“搜索链的其余部分中进行搜索。

如果给出了多个-include选项,则文件将按照它们在命令行中出现的顺序包括在内。


8
仅供参考,-include功能主要用于支持预编译的头文件。这样,您可以将.pch文件注入所有源文件中,而无需编辑每个文件。
gavinb 2010年

4
谢谢!尽管我做了RTFM(M = manpage),但我还是错过了。我还认为PCH只是Visual C ++功能...但是看来这就是它们在构建系统中使用的...
jdm 2010年

1
Visual C *的相应命令行参数将为/FI,以防万一有人需要移植使用此命令的构建。
PypeBros

#include <file>(尖括号)有什么相似之处吗?更详细地说,我对它的clang支持感兴趣
4ntoine

太棒了 @gavinb当我需要用一些替代函数和/或我的libc代码扩展来补充某些libc标头时,将其用于裸机用例。我所有的代码仍然可以使用标准标头作为原型,但也必须包含一些我需要使其在我的平台上工作的额外定义。
sherrellbc

30

从gcc手册中:

-include文件

处理文件,就好像“ #include "file"”显示为主要源文件的第一行。但是,搜索文件的第一个目录是预处理程序的工作目录,而不是包含主源文件的目录。如果未在此处找到,则#include "..."照常在“ ”搜索链的其余部分中进行搜索。

如果给出了多个-include选项,则文件将按照它们在命令行中出现的顺序包括在内。


11

根据gcc文档,命令行开关“ -include file”将完成此工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.