隐藏自动生成的 CTest 目标
Hide automatically generated CTest targets
我在 CLion 中使用 CMake 和 CTest。恼人的是,CTest 生成了一大堆我不关心的目标:
- 连续
- 持续构建
- 连续配置
- 连续覆盖
- ContinuousMemCheck
- 连续开始
- 连续提交
- 连续测试
- 持续更新
- 实验性
- 实验建造
- 实验配置
- 实验覆盖率
- ExperimentalMemCheck
- 实验开始
- 实验提交
- 实验测试
- 实验更新
- 每晚
- NightlyBuild
- 夜间配置
- 夜间报道
- NightlyMemCheck
- 夜间开始
- 每晚提交
- 夜间测试
- 每晚更新
这些都出现在 CLion 中。很烦人,因为我相信你会同意的。有解决方案可以删除它们吗?我愿意接受任何解决方案:
- 首先让 CTest 不生成它们。
- CTest 创建目标后删除它们。
- CLion 中用于隐藏它们的设置。
一个我不确定 100% 可行的解决方案是在 CLion 中转到 运行->Edit Configurations... 并简单地删除所有不需要的目标。
这似乎在重新加载 CMake 配置后仍然存在,并且 make clean
。
除非您使用的是 CDash,否则解决方案非常简单。
在您的 CMakefile 中替换
include(CTest)
和
enable_testing()
Hack 警告 - 下面的 hack 依赖于内部实现细节 (CTestTargets.cmake),因此不能保证适用于任何 CMake 版本。
如果无法避免 include(CTest)
,因为某些 CTest 功能是必需的,但 enable_testing()
不提供,例如 Valgrind 集成,可以使用以下方法完全避免生成自动 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
宏仍在使用)工作。
一个不需要删除这些目标的管理混乱的简单解决方案(因此您可以在需要时轻松返回它们)是在 Edit Configurations...
中创建一个 sub-folder菜单,您可以在其中拖动和移动您不感兴趣的所有条目以在顶层查看。
请注意,这更普遍地适用于各种目标类型,而不仅仅是测试相关的类型。
这是一个例子,我把所有的东西都放在 misc
文件夹中:
我在 CLion 中使用 CMake 和 CTest。恼人的是,CTest 生成了一大堆我不关心的目标:
- 连续
- 持续构建
- 连续配置
- 连续覆盖
- ContinuousMemCheck
- 连续开始
- 连续提交
- 连续测试
- 持续更新
- 实验性
- 实验建造
- 实验配置
- 实验覆盖率
- ExperimentalMemCheck
- 实验开始
- 实验提交
- 实验测试
- 实验更新
- 每晚
- NightlyBuild
- 夜间配置
- 夜间报道
- NightlyMemCheck
- 夜间开始
- 每晚提交
- 夜间测试
- 每晚更新
这些都出现在 CLion 中。很烦人,因为我相信你会同意的。有解决方案可以删除它们吗?我愿意接受任何解决方案:
- 首先让 CTest 不生成它们。
- CTest 创建目标后删除它们。
- CLion 中用于隐藏它们的设置。
一个我不确定 100% 可行的解决方案是在 CLion 中转到 运行->Edit Configurations... 并简单地删除所有不需要的目标。
这似乎在重新加载 CMake 配置后仍然存在,并且 make clean
。
除非您使用的是 CDash,否则解决方案非常简单。
在您的 CMakefile 中替换
include(CTest)
和
enable_testing()
Hack 警告 - 下面的 hack 依赖于内部实现细节 (CTestTargets.cmake),因此不能保证适用于任何 CMake 版本。
如果无法避免 include(CTest)
,因为某些 CTest 功能是必需的,但 enable_testing()
不提供,例如 Valgrind 集成,可以使用以下方法完全避免生成自动 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
宏仍在使用)工作。
一个不需要删除这些目标的管理混乱的简单解决方案(因此您可以在需要时轻松返回它们)是在 Edit Configurations...
中创建一个 sub-folder菜单,您可以在其中拖动和移动您不感兴趣的所有条目以在顶层查看。
请注意,这更普遍地适用于各种目标类型,而不仅仅是测试相关的类型。
这是一个例子,我把所有的东西都放在 misc
文件夹中: