Ответ 1
Интеграция Catch с CMake довольно проста, так как это библиотека только для заголовков.
Вот краткое описание того, что вам нужно сделать:
Вы можете либо предположить, что источники Catch уже установлены на машине сборки, либо используйте ExternalProject для получения их как части процесса сборки.
В любом случае вы получите файлы заголовков Catch в каком-либо известном каталоге на вашей машине сборки. Я бы рекомендовал создать целевой интерфейс для того, чтобы эта информация была известна вашим тестовым исполняемым файлам:
add_library(Catch INTERFACE)
target_include_directories(Catch INTERFACE ${YOUR_CATCH_INCLUDE_DIR})
Таким образом, вы можете просто указать Catch как зависимость от target_link_libraries
:
add_executable(my_test ${MY_TEST_SOURCES})
target_link_libraries(my_test Catch)
Как обычно в CMake, add_test
позаботится о введении тестов в CTest:
enable_testing()
add_test(NAME MyAwesomeTest COMMAND my_test)
И это уже. Запустите make test
в встроенном проекте для запуска тестов.
У меня есть проект на Github, который делает это, если вам нужно увидеть полный рабочий пример.