Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 获取使用GNU自动工具编译的项目的所有包含项列表_C_Header Files_Configure_Autotools - Fatal编程技术网

C 获取使用GNU自动工具编译的项目的所有包含项列表

C 获取使用GNU自动工具编译的项目的所有包含项列表,c,header-files,configure,autotools,C,Header Files,Configure,Autotools,对于使用GNU autotools(例如emacs)管理并成功编译的C项目,是否有一种简单的方法来获取编译项目所需的所有包含头的列表(编译期间由configure脚本找到的特定于站点的包含路径) 我目前的做法是 运行cpp-C… 查看缺少标题的错误 手动将所需标题的路径添加到我的命令中 重复此操作,直到不再出现错误 显然,这是一种痛苦。我认为使用configure编译的项目在某个地方会有这些信息。是吗 对于使用GNU自动工具(如emacs)管理和编译的C项目, 有没有一种简单的方法可以获取包含的

对于使用GNU autotools(例如emacs)管理并成功编译的C项目,是否有一种简单的方法来获取编译项目所需的所有包含头的列表(编译期间由
configure
脚本找到的特定于站点的包含路径)

我目前的做法是

  • 运行
    cpp-C…
  • 查看缺少标题的错误
  • 手动将所需标题的路径添加到我的命令中
  • 重复此操作,直到不再出现错误
  • 显然,这是一种痛苦。我认为使用
    configure
    编译的项目在某个地方会有这些信息。是吗

    对于使用GNU自动工具(如emacs)管理和编译的C项目, 有没有一种简单的方法可以获取包含的所有标题的列表 是否需要编辑该项目

    如果“被要求”是指您希望在项目成功构建后做出决定,那么是的。除非被抑制,否则基于自动生成的makefile具有生成包含依赖项列表的规则,它们在后续生成中使用这些规则来识别由于依赖项的更改而重建未更改的源的需要。您可以在
    .deps
    子目录中找到这些文件


    值得一提的是,当使用
    gcc
    进行编译时,会使用
    gcc-MM
    命令来实现此目的。

    gcc-MM myfile.c
    @wildplasser不考虑任何配置,是吗?似乎
    pkg-config--cflags-only-I
    可以工作,但我必须研究如何创建配置文件,我想,它也不考虑
    configure
    可以找到的任何非标准位置的包含,例如
    pkg-config--cflags-only-I cairo
    嗯。。。尝试
    制作
    并安装头,直到它工作为止?通常项目会列出它的依赖项。我假设这是一个XY问题,您试图在不查看依赖项列表的情况下找到编译项目所需的所有包含文件(例如emacs)?谢谢,是的,这就是我的意思,这就是我要找的。但是,这没有多大帮助,因为.d文件只有本地依赖关系。因此,我仍然需要手动添加所有系统包含路径(不在标准目录中)@jenesaisquoi,
    gcc-MM
    忽略在系统头目录中找到的头。这就是它与列出所有包含项的gcc-M的区别。我想你可以在生成makefile后修改它,用后者替换前者。对,我理解。不过,生成的makefile已经具有所有系统路径,这些路径位于由
    configure
    确定的变量中,如
    DBUS\CFLAGS
    。只是似乎没有一个标准的方法,没有目标,来列出它们。我认为会有,例如,生成
    pkg config
    文件--
    pkg config
    手册页甚至说该文件可能由
    configure
    生成,但是没有进一步扩展,我相信autoconf宏是
    AC\u CHECK\u MODULES
    PKG\u CHECK\u MODULES
    创建这些标准
    *\u CFLAGS
    variableSlat注意,
    gcc-M
    是不够的,因为它找不到非标准位置(正如
    configure
    将使用
    PKG config
    ),因此,默认情况下,任何包含它返回的系统都会被找到