加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – CMake – 自动解析预编译头的依赖关系?

发布时间:2020-12-16 05:19:32 所属栏目:百科 来源:网络整理
导读:至少据我所知,至少CMake没有一个标准的方法来指定以跨平台方式向项目添加预编译头(PCH),因为PC编译器的处理方式与供应商.对于G,这通常是通过简单地添加一个自定义命令来处理,该命令负责使用适当的输入调用编译器,并生成PCH. 我当前的问题是,CMake不会解析您
至少据我所知,至少CMake没有一个标准的方法来指定以跨平台方式向项目添加预编译头(PCH),因为PC编译器的处理方式与供应商.对于G,这通常是通过简单地添加一个自定义命令来处理,该命令负责使用适当的输入调用编译器,并生成PCH.

我当前的问题是,CMake不会解析您为自定义命令指定的依赖关系的依赖关系.例如,假设以下结构:

pch.h
 |- dependA.h
 |- dependB.h
 ...

只提供pch.h作为依赖关系将导致在相应的makefile中生成适当的目标,跟踪对pch.h的更改.但是,CMake不解析pch.h中的include,因此不会识别dependA.h和dependB.h的更改.如果依赖关系依赖于依赖性等等,这将会延续下去.

注意:我知道,PCH依赖关系可以和经常改变的事实使整个过程成为问题.然而,这只是它的方式,我不能真正做任何事情.

由于任务不是太难,有几个明显的想法可以想到:

解决方案A:

手动输入所有依赖项.显然这是有效的,但是如果没有任何规模,那么它就是无聊的.

解决方案B:

如果可能,请编写一个自动化进程并解析包含“手动”的CMake功能.

解决方案C:

使用不同的语言(例如Python)执行类似的操作,并且只需要为CMake提供添加到自定义命令的依赖关系列表.

解决方案D:

使用gcc / g的功能来解析和打印PCH的依赖关系树,并解析输出以提取依赖关系列表.

我的问题是:有没有人知道一个更方便快捷的方式来完成这个工作?

解决方法

add_custom_command的IMPLICIT_DEPENDS选项可能会诀窍:
add_custom_command(
    OUTPUT outFile
    COMMAND ...
    IMPLICIT_DEPENDS CXX "pch.h")

IMPLICIT_DEPENDS选项使生成的构建系统在构建时扫描给定输入文件的隐式依赖关系.但是,它只支持Makefile生成器.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读