【问题标题】:Hide automatically generated CTest targets隐藏自动生成的 CTest 目标
【发布时间】:2017-12-10 11:41:53
【问题描述】:
我在 CLion 中使用 CMake 和 CTest。烦人的是,CTest 生成了大量我不关心的目标:
- 连续
- 持续构建
- 连续配置
- 连续覆盖
- ContinuousMemCheck
- 连续启动
- 连续提交
- 连续测试
- 持续更新
- 实验性
- 实验性构建
- 实验配置
- 实验覆盖率
- ExperimentalMemCheck
- 实验开始
- 实验提交
- 实验测试
- 实验性更新
- 每晚
- 夜间构建
- 夜间配置
- 夜间报道
- NightlyMemCheck
- 夜间开始
- 每晚提交
- 夜间测试
- 每晚更新
这些都出现在 CLion 中。很烦人,因为我相信你会同意的。有没有办法删除它们?我愿意接受任何解决方案:
- 首先让 CTest 不生成它们。
- 在 CTest 创建目标后删除它们。
- CLion 中用于隐藏它们的设置。
【问题讨论】:
-
请参阅this 关于 SO 的 Q/A。这可能也解决了你的问题。
-
标签:
c++
cmake
clion
ctest
【解决方案1】:
除非您使用的是 Cdash,否则解决方案非常简单。
在你的 CMakefile 中替换
include(CTest)
与
enable_testing()
【解决方案2】:
Hack 警告 - 下面的 hack 依赖于内部实现细节 (CTestTargets.cmake),因此不保证适用于任何 CMake 版本。
如果无法避免 include(CTest),由于需要某些 CTest 功能并且 enable_testing() 不可用,例如 Valgrind 集成,则可以使用以下 hack 完全避免生成自动 CTest 目标:
set_property(GLOBAL PROPERTY CTEST_TARGETS_ADDED 1) # hack to prevent CTest added targets
include (CTest)
在包含CTest 之前将CTEST_TARGETS_ADDED 设置为1 将阻止生成自动CTest 目标。
我已经使用 CMake 3.6 对此进行了测试,它应该可以通过 CMake 3.19.6 工作(其中仍在使用 CTEST_TARGETS_ADDED 宏)。
【解决方案3】:
我不确定 100% 可行的可能解决方案是在 CLion 中转到 Run->Edit Configurations... 并简单地删除所有您不想要的目标。
这似乎在重新加载 CMake 配置和 make clean 后仍然存在。