Ответ 1
Трюк состоит в том, чтобы сделать add_subdirectory(test EXCLUDE_FROM_ALL)
, и тогда ни одна из целей в этом CMakeList.txt не будет добавлена к цели ALL.
Вот что я хочу сделать:
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), это было бы потрясающе.
Трюк состоит в том, чтобы сделать add_subdirectory(test EXCLUDE_FROM_ALL)
, и тогда ни одна из целей в этом CMakeList.txt не будет добавлена к цели ALL.