LINUX.ORG.RU

GTest + CMake


0

3

Пытаюсь к проекту прикрутить тесты. Понял, что абсолютно не понимаю как это сделать и что у меня не так.

Project
	src
		subdirs
		*.cpp
		*.h
	test
		test_*.cpp
	CMakeLists.txt

Корневой CMakeLists.txt выглядит вот так:

set (PROJECT Project)
project (${PROJECT})

set (INCLUDE_DIR ${PROJECT_SOURCE_DIR}/src)
set (SRC_DIR ${PROJECT_SOURCE_DIR}/src)

file(GLOB HEADERS "${INCLUDE_DIR}/*.h" "${INCLUDE_DIR}/subdirs/*.h" )
file(GLOB SOURCES "${SRC_DIR}/*.cpp" "${SRC_DIR}/subdirs/*.cpp"	)
	
source_group ("Header Files" FILES ${HEADERS})
source_group ("Source Files" FILES ${SOURCES})

add_executable (${PROJECT} ${SOURCES})
target_link_libraries(${PROJECT} thread rt)

Т.е. я не создают CMakeLists.txt в поддиректориях, у меня нет статических библиотек, все просто собирается в один бинарник.

Далее, я хочу добавить GTest. И вот тут у меня полный ступор. Могу ли я его добавить просто в этот корневой проект. Если да то имеет ли значение в каком месте?

enable_test()
set(PROJECT_TEST ${PROJECT}_test)
file(GLOB TEST_SRC_FILES ${PROJECT_SOURCE_DIR}/test/*.cpp)
add_executable(${PROJECT_TEST} ${TEST_SRC_FILES})
target_link_libraries(${PROJECT_TEST} pthread)
target_link_libraries(${PROJECT_TEST} rt)
add_test(${PROJECT_TEST} ${PROJECT_TEST})
add_dependency(${PROJECT_TEST} ${PROJECT})
Если делаю так, то у меня нет возможности обратить к тестируемым классам, потому что они не линкуются в тестовый бинарник. Если я пробую добавить исхоники проекта в тестовый проект, то у меня main функция тестового проекта замещается main функцией основного проекта. Либо я что то сделал нетак.

Вопрос, нужно ли мне разносить все свои исходники на Main часть и на все остальное в статическую библиотеку, которую подключать к тестам. Можно ли без вот этого разноса обойтись?



Последнее исправление: Cupper (всего исправлений: 1)

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.