CLion: запускать тесты перед сборкой - PullRequest
1 голос
/ 31 октября 2019

Я сделал проект в CLion (C ++ + CMake), где у меня есть общая библиотека проект с 2 конфигурациями Отладка |Релиз . Я также реализовал тесты Google для модульного тестирования.

Когда конфигурация Release Я хотел бы запустить некоторые тесты (или все) перед сборкой. Если тесты не пройдены, библиотека должна быть , а не .

Возможно ли это? Если так, то как?

1 Ответ

0 голосов
/ 01 ноября 2019

Я нашел ответ с add_custom_command(). В моем основном CMakeLists.txt у меня есть

if(${CMAKE_BUILD_TYPE} STREQUAL "Release")
   #Rebuild the tests just in case some tests has changed and the executable was not rebuild
   add_custom_command(TARGET ${PROJECT_NAME} PRE_BUILD
           COMMAND ${CMAKE_COMMAND} --build "${CMAKE_BINARY_DIR}" --target tests --
           )

   if(${WIN32})
      set(TESTS_BIN tests.exe)
   else()
      set(TESTS_BIN tests)
   endif()
   #Run the tests executable
   add_custom_command(TARGET ${PROJECT_NAME} PRE_BUILD
           COMMAND "${CMAKE_BINARY_DIR}/${TESTS_BIN}"
           )
endif()

add_custom_command() умный, поэтому, когда исполняемый файл tests не возвращает 0 (все тесты пройденыуспешно) сборка не удастся, и библиотека не будет собрана.

...