具有cmake依赖性问题的C meta

时间:2017-02-07 16:20:38

标签: python c++ c cmake metadata

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

但是,存在一个问题 - 我使用cmake来构建项目,这让我可以自动构建这些项目,但是当我查看“依赖项”时会出现问题。事情的一面 - 也就是因为cmake不知道我的脚本正在解析代码(因而也就是头文件),因此输出依赖于脚本,C文件,它导入的头文件和头文件进口等

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

例如:

最初,

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

编译

然后修改A以便

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

但是未来对C.h的更改不会导致脚本重新运行,因为cmake有一个过时依赖关系的过时视图。

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

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

感谢。

1 个答案:

答案 0 :(得分:0)

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

有人看到这个问题吗?