Скрыть автоматически сгенерированные цели CTest

Я использую CMake и CTest в CLion. Раздражает то, что CTest генерирует множество целей, которые меня не волнуют:

  • Непрерывный
  • Непрерывная сборка
  • Непрерывная конфигурация
  • Непрерывное покрытие
  • Непрерывная проверка памяти
  • Непрерывный Старт
  • НепрерывныйОтправить
  • Непрерывный тест
  • Непрерывное обновление
  • Экспериментальный
  • Экспериментальная сборка
  • ЭкспериментальныйКонфигурация
  • Экспериментальное покрытие
  • ЭкспериментальнаяMemCheck
  • ЭкспериментальныйСтарт
  • ЭкспериментальнаяОтправить
  • ЭкспериментальныйТест
  • Экспериментальное обновление
  • Ночной
  • NightlyBuild
  • NightlyConfigure
  • Ночное покрытие
  • NightlyMemCheck
  • NightlyStart
  • NightlyОтправить
  • NightlyTest
  • ночное обновление

Все это отображается в CLion. Довольно раздражает, поскольку я уверен, что вы согласитесь. Есть ли решение их удалить? Я открыт для любого решения:

  1. Получите CTest, чтобы не генерировать их в первую очередь.
  2. Удалите цели после того, как CTest создаст их.
  3. Параметр в CLion для их скрытия.

person Timmmm    schedule 06.07.2017    source источник
comment
См. это Q/A по SO. Возможно, это решит и ваши проблемы.   -  person skypjack    schedule 18.07.2017
comment
Просто отметим, что я зарегистрировал запрос функции для CMake, чтобы предоставить способ предотвратить создание этих целей: gitlab.kitware.com/cmake/cmake/-/issues/21730   -  person Clare Macrae    schedule 21.01.2021


Ответы (3)


Если вы не используете CDash, решение очень простое.

В вашем CMakefile замените

include(CTest)

с

enable_testing()
person Juan Leni    schedule 11.08.2018

Предупреждение о взломе. Нижеприведенный взлом основан на деталях внутренней реализации (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_TARGETS_ADDED на 1 перед включением CTest предотвратит создание автоматических целей CTest.

Я тестировал это с CMake 3.6, и он должен работать через CMake 3.19.6 (в котором все еще используется макрос CTEST_TARGETS_ADDED).

person valiano    schedule 28.07.2019

Возможное решение, которое, я не уверен, работает на 100%, состоит в том, чтобы перейти в Run->Edit Configurations... в CLion и просто удалить все цели, которые вам не нужны.

Кажется, это выживает после перезагрузки конфигурации CMake, и make clean.

person Timmmm    schedule 06.07.2017