CMake: 跳过编译器测试

4

有超过200个项目,我希望跳过每次清理构建时进行的cmake编译器测试。

有时它比构建项目本身需要更多的时间,并且在安装后的初始检查之后对我来说绝对不是必需的(我愿意承担后果)。

使用“NONE”语言定义项目会导致“CMake无法确定链接器语言”的错误。

我该怎么做?


如果你不想进行一次干净的构建,就不要进行一次干净的构建。 - John Zwinck
你为什么有200个项目? - John Zwinck
200个产品... - gil_mo
1
从你的CMake命令行开始尝试加入-DCMAKE_CXX_COMPILER_WORKS=1,如果我没记错的话,这将跳过CXX编译器测试。 - Florian
1
很遗憾,这个定义不起作用... - gil_mo
显示剩余2条评论
2个回答

1

我有同样的问题。我们只有一个项目,但 ROS/catkin(机器人操作系统)的工作方式是每个节点都是一个 CMake 项目。目前我们有超过60个节点。由于catkin在配置时做了很多事情,我们需要经常运行清理。

有没有办法让CMake在干净的构建中跳过所有这些无用的测试?

目前,我们的Jenkins还启用了sanitizer来运行单元测试。每个测试都需要重新编译。这是60个节点使用GCC,然后是Clang和ASan、UBSan、MSan。这是4 x 60 x CMake的缓慢。

这似乎是一个基本的问题,应该在CMake中以某种方式解决。你在这方面有任何进展吗?


0

CMake没有内置此功能。但是,您可以尝试的一件事是生成项目一次并将这些文件保存在项目外的特殊目录中。然后,当您想要进行干净的构建时,只需用特殊目录的副本替换您的构建目录,而不是再次运行CMake。这将为您提供一个“干净”的构建,而无需重新生成项目、查找库和编译器等。


那听起来像是黑客攻击cmake...我原本期望的是一种“按部就班”的方法。 - gil_mo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接