Тесты CMake для библиотеки, предназначенной для использования в качестве подмодуля git - PullRequest
1 голос
/ 23 марта 2019

Ситуация: вы разрабатываете библиотеку, которая использует CMake в качестве своей (мета) системы сборки. Библиотека предназначена только для заголовков (на самом деле она нужна, вопрос все еще применим), содержит тесты и примеры (например, тесты производительности). Библиотеку можно использовать, установив ее и используя полученные файлы пакета, или (что зачастую проще избежать несоответствия в ABI), добавив ее как git submodule и просто add_subdirectory it.

Вопрос: Как лучше всего обрабатывать тесты в этой библиотеке?

Обычно CMake верхнего уровня будет выглядеть так:

[...setup code, project(...)`]
add_library(foo src/foo.cpp)
target_include_libraries(foo PUBLIC include)

include(CTest)
if(BUILD_TESTING)
  add_subdirectory(tests)
endif()
if(FOO_BUILD_EXAMPLES)
  add_subdirectory(examples)
endif()
install(TARGETS foo ...)
install(...)

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

Это то, что следует сделать и ожидать?

Аналогично для команд установки: при установке суперпроекта также устанавливается подмодуль (я думаю), который может быть неправильным, поскольку указанный CMAKE_INSTALL_PREFIX предназначен для суперпроекта и может не подходить для подмодуля.

Это привело бы к использованию префиксов и опций, таких как FOO_BUILD_TESTING и FOO_INSTALL, но я не вижу, чтобы они использовались часто.

Много ли я волнуюсь или что-то упускаю? Как создать (и запустить) тесты и установки для подмодулей git?

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