列出使用 gcc 编译的项目使用的头文件以及层次结构

列出使用 gcc 编译的项目使用的头文件以及层次结构

我目前有一个跨越两个不同源代码控制系统的 C++ 项目。在不将第一个系统的完整源代码签入第二个系统的情况下,我计划仅签入构建的支持库。我的问题是,我将需要在第二个源控制系统中使用的第一个源控制系统中的头文件,以便我可以编译。有没有一种简单的方法可以强制 gcc 输出我在 Solaris 下编译时使用的头文件的所有名称?有没有办法生成头文件依赖关系的层次结构,以便我可以看到哪些文件包含哪些其他头文件?层次结构是否可以一次了解#pragma,以便依赖关系树不包含未多次包含的重复项?

答案1

运行gcc -M以生成给定源文件使用的头文件列表,或gcc -MM省略系统头文件。输出采用 makefile 格式,因为该选项旨在生成该源文件的构建依赖项。有多种方法可以调整输出格式,请参阅 GCC 手册中可用的预处理器选项。默认输出如下所示:

foo.o: foo.c some_header.h ../include/other_header.h \
        ../../common/include/yet_another_header.h

答案2

1992年论文一些 AT&T 研究人员描述了一个工具“incl”,可以对 C 文件执行此操作,但据我所知,“incl”从未出现在广阔的世界中。

相关内容