首页 > 解决方案 > 如何调试为什么cmake(带有make后端)重建源代码?

问题描述

我有一个具有多个阶段的 Gitlab 项目。artifacts:通过使用gitlab CI yaml 配置中的关键字归档,基于 cmake 的第一阶段的输出工件被传递到下一阶段。

下一个阶段成功提取这些工件,包括所有要运行的 *.o 和 *.so 文件ctest(即,这是一个“测试”阶段)。

但是 ctest / cmake 决定它需要从头开始构建所有内容。cmake (或 make 后端)中是否有一些机制来显示触发了哪些规则以及为什么需要重建?例如,与源相比,工件是否过时或发生了什么?

标签: makefilecmakegitlab

解决方案


在当前可用的 GNU make 版本中,最好的选择是使用make --debug=b(基本调试)或者如果这还不够,make --debug=v(更详细的调试)。


推荐阅读