2016-02-10 1 views
1

Я работаю над проектом, созданным с помощью CMake, который использует тест Google для тестирования. Файл CMakeLists.txt моих тестов выглядит следующим образом:отделив тестовые чехлы googletest с cmake

add_executable(run_tests 
    testcase_a.cpp 
    dependency_a.cpp 
    testcase_b.cpp 
    dependency_b.cpp 
) 
target_link_libraries(run_tests gtest gtest_main) 

С ростом числа тестовых случаев это становится довольно грязным. Я хотел бы скомпилировать каждый из тестовых модулей отдельно, а затем запустить их с помощью одного бинарного файла. Можно ли это сделать с помощью CMake и gtest_main? Или есть лучший способ сделать это, что мне не хватает?

ответ

0

Вот основная идея: -

add_library(testcase_a.o OBJECT testcase_a.cpp dependency_a.cpp) 
add_library(testcase_b.o OBJECT testcase_b.cpp dependency_b.cpp) 
add_executable(run_tests $<TARGET_OBJECTS:testcase_a.o> $<TARGET_OBJECTS:testcase_b.o>) 
target_link_libraries(run_tests gtest gtest_main) 

См Object Libraries

+0

Это выглядит как решение мне нужно. Однако я не могу заставить исполняемый файл run_tests правильно связываться - библиотеки жалуются на отсутствие ссылок на функции gtest. – Teyras

+0

@Teyras Если вы можете опубликовать [MVCE] (http://stackoverflow.com/help/mcve) для отказа в связи, возможно, я смогу понять, что случилось. Пока можно только сказать, что это работает для меня. Убедитесь, что вы создали свой libgtest и libgtest_main с тем же самым компилятором, который теперь создает ваши 'run_tests'. –

+0

Ну, похоже, работает минимальная настройка. Я поправлю ваш ответ как правильный и постараюсь самостоятельно разобраться с моими проблемами. – Teyras

 Смежные вопросы

  • Нет связанных вопросов^_^