Сборка тестов с CMake без использования CTest - PullRequest
11 голосов
/ 10 апреля 2011

Вот что я хочу сделать:

  • При наборе make all будет построена моя библиотека и документы для нее.
  • При наборе make test будет создана моя библиотека (еслинеобходимо), gtest, а затем мои тесты
  • При наборе make check запускается make test при необходимости, а затем запускается исполняемый файл

Прямо сейчас мне удалось получить только первыйРабота.У меня проблема с условным включением gtest.

Gtest использует CMake, что неплохо, теоретически все, что мне нужно сделать, это включить каталог gtest с add_subdirectory, но тогда gtest всегда будет собран.

Моя структура сейчас такова:

CMakeLists.txt     (Here I add targets for doc and the library)
doc                (my doxygen docs)
include            (my headers)
lib                (where my compiled libraries go)
src                (where my .cpp files go)
test
    CMakeLists.txt (Here I add targets for gest and my tests)
    bin            (where the test executable will go)
    contrib        (where gtest is)
    src            (my tests)

Я пытаюсь выяснить, как добавить gtest в качестве зависимости к цели test, но не собираю gtest каждый раз.

Я действительно раздражен, и почти нет никакой информации об изучении CMake, так что если кто-нибудь знает какие-либо подробные учебные пособия (свободно доступные на веб-сайтах), это было бы здорово.

1 Ответ

6 голосов
/ 11 апреля 2011

Хитрость заключается в том, чтобы сделать add_subdirectory(test EXCLUDE_FROM_ALL), и тогда ни одна из целей в этом CMakeList.txt не будет добавлена ​​к цели ALL.

...