CMake和多阶段构建管道(重用)

时间:2019-03-19 06:57:55

标签: c++ cmake

我有一个cpp cmake项目,需要一些时间来编译核心组件。

  • 组件A(需要2个小时才能编译)
  • 组件B(需要1个小时才能编译)
  • 组件C需要静态链接到组件A和B(需要5分钟)

我们主要只是更改组件C。

但是我们希望我们的PR Build Gates重建A和B(如果需要),但不一定不需要任何更改。

我想每晚构建一次组件A和B。

然后在白天,让我们的PR Gates从他们的网站下载中间体,然后进行增量构建,仅重建已更改的零件。

但是,cmake似乎将许多文件夹路径信息嵌入到中间体/缓存图章文件和东西中。而且我们的构建机器每次都有不同的路径。 (例如c:\ repo ### \ sourceDir \ 并且###每次都会更改。

有没有简单的方法可以做到这一点?还是我必须“修改所有相关的.txt,.tlog,缓存文本等。”文件,并在修改文件路径以匹配当前计算机之后还要将时间戳恢复为原始格式。

我尝试只复制/ intermediates /文件夹中的所有.obj和其他内容,但是我认为cmake对文件夹路径很挑剔。

而且我不想使用组件A或B中的预构建.lib或.dll,因为我们可能已经对其进行了更改,因此在这种情况下它应该进行增量处理。

编辑/答案

我还没有研究过ccache,还没有听说过。

我们通过cmake.exe(配置/构建/安装)cmakelists.txt来调用它。每个组件在toplevelfolder

中都有自己的cmakelists.txt。
  • src / componentA / cmakelists.txt(本身控制所有内容,没有B或C的边框)
  • src / componentA / cmakelists.txt(本身控制一切,没有A或C的壁架)
  • src / componentC / cmakelists.txt(控制自身的所有内容,包括A和B中的内容)

0 个答案:

没有答案