【问题标题】:Hide automatically generated CTest targets隐藏自动生成的 CTest 目标
【发布时间】:2017-12-10 11:41:53
【问题描述】:

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

  • 连续
  • 持续构建
  • 连续配置
  • 连续覆盖
  • ContinuousMemCheck
  • 连续启动
  • 连续提交
  • 连续测试
  • 持续更新
  • 实验性
  • 实验性构建
  • 实验配置
  • 实验覆盖率
  • ExperimentalMemCheck
  • 实验开始
  • 实验提交
  • 实验测试
  • 实验性更新
  • 每晚
  • 夜间构建
  • 夜间配置
  • 夜间报道
  • NightlyMemCheck
  • 夜间开始
  • 每晚提交
  • 夜间测试
  • 每晚更新

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

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

【问题讨论】:

标签: 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 后仍然存在。

      【讨论】:

        猜你喜欢
        • 2010-11-28
        • 2019-03-29
        • 2018-06-16
        • 2017-02-04
        • 1970-01-01
        • 2022-08-16
        • 2011-07-19
        • 2012-06-16
        • 2018-01-27
        相关资源
        最近更新 更多