【发布时间】: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