【问题标题】:C meta with cmake dependency issues具有 cmake 依赖问题的 C 元
【发布时间】:2017-02-07 16:20:38
【问题描述】:

我正在开发一个混合 C 和 C++ 的项目(当然在不同的文件中)。除了调试之外,我还希望能够从 C 代码中打印和保存/加载数据结构。自然,我希望自动生成该代码,并且我有几个脚本可以通过 python 解析 C 代码并通过读取结构成员吐出函数来完成工作,从而实际管理工作。

但是,有一点问题 - 我正在使用 cmake 构建项目,它可以让我自动构建这些,但是当我查看事物的“依赖”方面时问题出现了 - 即因为 cmake 没有不知道我的脚本正在解析代码(以及头文件),因此输出取决于脚本、C 文件、它导入的头文件和它们导入的头文件等。

我找到了如何让 gcc 为我提供给定文件的当前依赖关系树,但我意识到将其与 cmake 集成存在问题 - 即,一旦我声明了生成文件的依赖关系,cmake 将获胜t 自动重新检查依赖关系列表是否已更改。因此,如果 C 文件开发人员在某处添加了新的 include 语句,它将重新编译一次,但不会重新编译新标头的更改。

例如:

最初,

A.c ----includes----> B.h

编译

然后A被修改为

A.c ----includes----> B.h | └---> C.h

但未来对 C.h 的更改不会导致脚本重新运行,因为 cmake 对输出依赖项的看法已过时。

有没有办法在 cmake 中解决这个问题?

或者,是否有一种受支持的方法可以从我不知道的 cmake 已经支持的源代码中获取 C/C++ 元数据?

谢谢。

【问题讨论】:

    标签: python c++ c cmake metadata


    【解决方案1】:

    有一个想法 - 我可以让我的脚本将依赖项列表转储为我的构建导入的 .cmake 文件 - 这将触发 cmake 在每次更改依赖项时重新运行,这将使依赖项信息保持在日期。

    有人发现这有问题吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-03
      • 1970-01-01
      相关资源
      最近更新 更多