如何在大型项目中预处理具有多个 #include 文件的单个源文件

How to preprocess individual source file with several #include files spread across in large project?

本文关键字:#include 文件 源文件 单个 大型项目 预处理      更新时间:2023-10-16

为了获取预处理的输出,使用以下命令:

g++ -E a.cpp > temp.cpp

如果a.cpp#include文件不在同一文件夹中,那么我们使用:

g++ -I <directory> -E a.cpp > temp.cpp

现在,有几个.cpp文件,我想要一个预处理的输出。
每个.cpp文件和头文件都有巨大的#include依赖关系,分布在几个不同的子目录中;因此,以下选项非常麻烦:

g++ -I <dir1> -I <dir2> -I <dir3> ... -E a.cpp > temp.cpp

有没有更简单的方法(最好不使用Makefile)?
(假设dir1, dir2, ...位于单个目录下)

您需要同一组-I进行预处理和编译。

当你实际编译代码时,你肯定会使用一些-I参数(可能由 make 文件生成)。
所以只需使用相同的参数(或编译,并复制和粘贴-I参数)。

我看到的唯一选择是将您的头目录重组为位于公共目录中(带有子目录,使用 #include <subdir/header.h> )。
但这需要做更多的工作(尽管可能值得付出努力)。

一种方法是提供所有子目录所在的 TOP 目录。这样你就不必给很多-I。但这会减慢速度。