隐藏自动生成的 CTest 目标

Hide automatically generated CTest targets

我在 CLion 中使用 CMake 和 CTest。恼人的是,CTest 生成了一大堆我不关心的目标:

这些都出现在 CLion 中。很烦人,因为我相信你会同意的。有解决方案可以删除它们吗?我愿意接受任何解决方案:

  1. 首先让 CTest 不生成它们。
  2. CTest 创建目标后删除它们。
  3. 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 文件夹中: