隐藏自动生成的CTest目标

时间:2017-07-06 12:48:52

标签: c++ cmake clion ctest

我在CLion中使用CMake和CTest。令人讨厌的是,CTest产生了一堆我不关心的目标:

  • 连续
  • ContinuousBuild
  • ContinuousConfigure
  • ContinuousCoverage
  • ContinuousMemCheck
  • ContinuousStart
  • ContinuousSubmit
  • ContinuousTest
  • ContinuousUpdate
  • 实验
  • ExperimentalBuild
  • ExperimentalConfigure
  • ExperimentalCoverage
  • ExperimentalMemCheck
  • ExperimentalStart
  • ExperimentalSubmit
  • ExperimentalTest
  • ExperimentalUpdate
  • 每晚
  • NightlyBuild
  • NightlyConfigure
  • NightlyCoverage
  • NightlyMemCheck
  • NightlyStart
  • NightlySubmit
  • NightlyTest
  • NightlyUpdate

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

  1. 首先让CTest不生成它们。
  2. 在CTest创建目标后删除目标。
  3. 在CLion中设置隐藏它们。

3 个答案:

答案 0 :(得分:1)

除非您使用CDash,否则解决方案非常简单。

在您的CMakefile中替换

include(CTest)

使用

enable_testing()

答案 1 :(得分:0)

我不确定100%工作的可能解决方案是在CLion中转到Run-> Edit Configurations ...并简单地删除您不想要的所有目标。

这似乎无法重新加载CMake配置,make clean

答案 2 :(得分:0)

hack警告-hack下面的内容依赖于内部实现细节(CTestTargets.cmake),因此不能保证可与任何CMake版本一起使用。

如果无法避免include(CTest),则由于某些enable_testing()所需的CTest功能是必需的,例如Valgrind集成不可用,因此可以使用以下技巧完全避免自动CTest目标的生成:

set_property(GLOBAL PROPERTY CTEST_TARGETS_ADDED 1) # hack to prevent CTest added targets
include (CTest)

在包含CTEST_TARGETS_ADDED之前将1设置为CTest将阻止自动CTest目标的生成。

我已经在CMake 3.6中进行了测试,它应该在CMake 3.15中正常工作(其中的CTEST_TARGETS_ADDED宏仍在使用中)。