Что делает enable_testing () в cmake? - PullRequest
0 голосов
/ 22 мая 2018

Я вижу, что для добавления моих тестов google (для моего проекта cpp) мне нужно сделать вызов enable_testing () в корневом каталоге с исходным кодом.Может кто-нибудь объяснить, что это на самом деле делает?Кроме того, почему бы cmake не сделать это по умолчанию?

Это все, что я мог получить из документации.

Включает тестирование для этого каталога и ниже.Смотрите также команду add_test ().Обратите внимание, что ctest ожидает найти тестовый файл в корне каталога сборки.Следовательно, эта команда должна находиться в корневом каталоге исходного кода.

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Когда вы звоните add_test(...), CMake не будет генерировать тесты, пока не будет вызван enable_testing().Обратите внимание, что вам обычно не нужно вызывать это напрямую.Просто include(CTest), и он вызовет его для вас.

Моя настройка CMake часто выглядит следующим образом:

include(CTest) # note: this adds a BUILD_TESTING which defaults to ON

# ...

if(BUILD_TESTING)
  add_subdirectory(tests)
endif()

В тестах каталог:

# setup test dependencies
# googletest has some code they explain on how to set it up; put that here

add_executable(MyUnitTests
    # ...
)

target_link_libraries(MyUnitTests gtest_main)

add_test(MyUnitTestName MyUnitTests)
0 голосов
/ 22 мая 2018

Это устанавливает определение в генераторе, CMAKE_TESTING_ENABLED, которое, если не определено, позволяет cmake пропустить много дополнительной обработки, связанной с регистрацией юнит-тестов.с ctest. (пример)

Основным преимуществом этого является то, что он позволяет выборочно включать / отключать генерацию тестов в ваших файлах сборки при вызове cmake.

AsНапример, вы можете поместить следующий фрагмент в свой корень CMakeLists.txt file:

Он создает опцию для включения тестов, которые по умолчанию отключены.

option(ENABLE_TESTS "Enable tests" OFF)
if (${ENABLE_TESTS})
    enable_testing()
endif()

Вам нужно только сделатьодин раз, в вашем корне CMakeLists.txt и в остальных ваших файлах cmake вы можете с радостью вызывать add_test() и т. д., не беспокоясь о проверке if (${ENABLE_TESTS}) каждый раз

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...