获取使用 GNU autotools 编译的项目的所有包含列表

Get list of all includes for project compiled with GNU autotools

对于使用 GNU 自动工具管理并成功编译的 C 项目,例如。 emacs,是否有一种简单的方法来获取所有包含的 header 的列表, 编译项目所需的(site-specific 包含已找到的路径在编译期间通过 configure 脚本)?

我目前的方法是

  1. 运行 cpp -C ...
  2. 查看缺少的错误header
  3. 手动将所需header的路径添加到我的命令
  4. 重复直到没有错误。

显然,这是一种痛苦。我认为使用 configure 编译的项目会在某处包含此信息。是吗?

For a C project managed and compiled using GNU autotools, eg. emacs, is there a simple way to get a list of all the included headers that were required to compile the project?

如果"were required"你的意思是要在项目构建成功后再做判断,那么是的。除非被禁止,否则基于 Automake 的 makefile 具有生成包含依赖项列表的规则,它们在后续构建中使用这些规则来识别由于依赖项更改而需要重建未更改的源。您可以在 .deps 子目录中找到这些文件。

值得一提的是,当使用 gcc 编译时,gcc -MM 命令用于此目的。