Строить тесты с помощью CMake, не используя CTest

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

  • Ввод make all будет создавать мою библиотеку и документы для нее.
  • Ввод make test будет создавать мою lib (если необходимо), 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 -target, но не строить gtest каждый раз.

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

Ответ 1

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