【发布时间】:2013-07-23 20:05:49
【问题描述】:
这个项目保存在一个 git 存储库中,我们使用 cmake 和 ninja 构建它。 我们正在使用通配表达式/函数来收集所有要编译的源文件。这意味着每次添加/删除文件时,都必须调用 cmake 来重新解析目录。
我们已经看到,当有人在某人推送了一些新文件后,没有对任何 cmake 文件进行修改时,这会带来一些时间损失。我说最后一件事是因为对任何 cmake 文件的修改都会触发对 cmake 的调用(由 ninja),一切都会好起来的。
如何在拉取后重新开始构建项目之前/之后调用 cmake? (注意:cmake 的运行是否比必要的多一点无关紧要,只要不是总是这样)
我正在构建源代码,此外还使用了几个构建目录,例如我测试不同的编译器。
我正在探索一些解决方案。一个使用 git hooks 脚本,即 post-merge(但我怎么能保证我会检索到 source/CMakeLists.txt 的路径以 touch 它?我可以提交脚本以便它为每个人运行吗?这不是一个公共项目)。不知道有没有关系,我们主要是通过图形界面(TortoiseGit)使用git。
另一种可能的解决方案是在 cmake 中使用依赖于 .git\refs\heads 目录内容的自定义目标,但我想不出真正可行的组合......
一些链接:
【问题讨论】: