Я новичок в CMake и использую Google Test Framework. Я искал более сложные примеры объединения CMake и среды тестирования Google, но мне не повезло. Я надеялся, что кто-то может высказать свое мнение о настройке, к которой я пришел, и ответить на вопрос для меня. Вот основная структура проекта:
ProjectFolder
-CMakeLists.txt
/ построить
/ включить
-все мои файлы .h
/ SRC
-CMakeLists.txt
-все мои файлы .cpp
/ тесты
-CMakeLists.txt
/ gtest
-Google's CMakeLists.txt
/ издевается
-CMakeLists.txt
-cpp и h файлы для макетов
Короче говоря, корневой файл cmake добавляет src и тестирует в качестве подкаталогов. Файл src cmake переносит файлы cpp в библиотеку. Файл cmake tests добавляет макеты и gtest в качестве подкаталогов. Поддельный файл cmake переносит все свои файлы cpp во вторую библиотеку. Наконец, файл cmake в папке «tests» связывает библиотеку src, библиотеки google и mocks с исполняемыми файлами модульного теста.
В итоге я получаю несколько исполняемых файлов: objA_unittest, objB_unittest и т. Д.
Несколько вещей:
Чтобы собрать все это и сохранить каталог проекта достаточно чистым, я перехожу в папку сборки и запускаю "cmake ..". Это, кажется, работает очень хорошо, и я планировал настроить vim, чтобы всегда запускать make этой папки. У кого-нибудь есть какие-либо советы или или есть какие-либо проблемы с этим подходом?
Мне не нравится идея вкладывать библиотеку Google в папку моего проекта (особенно, если у меня в конечном итоге есть несколько проектов, которые ее используют), но, как представляется, настоятельно рекомендуется не выполнять прекомпиляцию библиотеки Google я не вижу никакого способа обойти это. Однако, если кто-нибудь знает, как лучше, я бы с удовольствием его услышал.
Запуск тестов. Мне нравится, что все, что мне нужно сделать, это запустить "make test", чтобы выполнить все мои модульные тесты с помощью ctest. Тем не менее, я обнаружил, что мне не очень нравится результат. Каждый исполняемый модуль содержит несколько различных модульных тестов. Запуск их напрямую обеспечивает очень подробный отзыв Google. Если один из тестов в исполняемом файле не пройден, я точно знаю, какой тест не пройден и почему. Ранее я использовал make-файл и в конце make-файла я просто выполнил все тесты. Сначала я попытался исправить это, создав собственную цель сборки в cmake. Однако он выполняет только первую команду. Мне либо нужен способ получить более подробный вывод из CTest, либо мне нужен способ автоматически выводить bash-скрипт или что-то похожее из CMake для выполнения каждого исполняемого модуля. Другими словами, у меня сейчас настроен файл cmake, поэтому мне нужно только добавить модульный тест в одном месте для генерации исполняемого файла, и я не хочу не забыть добавить его во второе место, если я могу избежать Это. У кого-нибудь есть опыт, который будет полезен в этом вопросе?
Заранее большое спасибо.