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