如何使用在大型项目中分布的几个#include文件预处理单个源文件?

时间:2012-05-17 06:03:10

标签: c++ g++ c-preprocessor

要获得预处理输出,请使用以下命令:

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

如果a.cpp的{​​{1}}个文件不在同一个文件夹中,我们会使用:

#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在一个目录下)

2 个答案:

答案 0 :(得分:2)

您需要使用相同的-I集进行预处理和编译。

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

我看到的唯一选择是将头目录重构为一个公共目录(使用#include <subdir/header.h>子目录。) 但这是更多的工作(尽管可能值得付出努力)。

答案 1 :(得分:0)

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

相关问题