Я новичок в CMake и использую Google Test Framework. Я искал более сложные примеры объединения CMake и среды тестирования Google, но мне не повезло. Я надеялся, что кто-нибудь выскажет свое мнение о настройке, к которой я пришел, и ответит на мой вопрос. Вот основная структура проекта:
ProjectFolder
-CMakeLists.txt
/ build
/ include
-все мои файлы .h
/ src
-CMakeLists.txt
- все мои файлы .cpp
/ tests
-CMakeLists.txt
/ gtest
-Google CMakeLists.txt
/ mocks
-CMakeLists.txt
-cpp и h файлы для моков
Короче говоря, корневой файл cmake добавляет src и тесты в качестве подкаталогов. Файл src cmake объединяет файлы cpp в библиотеку. Файл cmake tests добавляет mocks и 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, поэтому мне нужно только добавить модульный тест в одном месте для создания исполняемого файла, и я не хочу, чтобы не забывал добавлять его во второе место, если я могу избежать Это. Есть ли у кого-нибудь опыт, который был бы полезен в этом вопросе?
Большое спасибо заранее.