使用命令行选项包含头文件?
Posted
技术标签:
【中文标题】使用命令行选项包含头文件?【英文标题】:Include header files using command line option? 【发布时间】:2011-03-24 04:20:18 【问题描述】:是否可以从命令行指定要包含的额外头文件(使用 GCC 4 / C++)?
或者除了#include 之外还有其他方法可以包含文件吗?
背景:我正在尝试在我自己的 PC 上编译一个大型代码库。代码通常在一个集群中编译,具有复杂的构建系统(SoftRelTools 有人吗?),它与操作系统交织在一起,因此几乎不可能将其安装在其他地方(实际上是数百个 makefile 和 shell 脚本,而且很难网络驱动器的编码路径)。然而,实际的代码相当简单,并且编译得很好,但是它缺少很多包含(主要是“include <vector>
”和“include <math.h>
”)。我猜构建系统通常会处理这个问题,但我必须检查代码并手动添加包含,我宁愿避免这样做。
【问题讨论】:
【参考方案1】:来自 gcc 手册:
-包含文件
处理文件,就像“
#include "file"
”作为主要源文件的第一行出现一样。但是,搜索文件的第一个目录是预处理器的工作目录,而不是包含主源文件的目录。如果在此处未找到,则正常在“#include "..."
”搜索链的其余部分中进行搜索。如果给出了多个 -include 选项,文件将按照它们在命令行中出现的顺序被包含。
【讨论】:
【参考方案2】:我found -include 选项。这是你想要的吗?
-包含文件
处理文件好像“#include”file“”作为第一行出现 主要源文件。然而 搜索文件的第一个目录是 预处理器的工作目录 而不是包含的目录 主源文件。如果没有找到 在那里,它在 "#include "..."" 的剩余部分 搜索链正常。
如果给出了多个 -include 选项,则文件包含在 它们在命令行中出现的顺序。
【讨论】:
仅供参考,-include 功能主要用于支持预编译的头文件。这样您就可以将 .pch 文件注入到所有源文件中,而无需编辑每一个源文件。 谢谢!虽然我做了 RTFM(M=manpage),但我错过了。我还认为 PCH 只是 Visual C++ 的一项功能……但似乎这就是他们在构建系统中使用的功能…… Visual C* 对应的命令行参数是/FI
,以防万一有人需要移植使用它的构建。
#include 根据 gcc 文档,命令行开关“-include file”可以完成这项工作。
【讨论】:
以上是关于使用命令行选项包含头文件?的主要内容,如果未能解决你的问题,请参考以下文章