blob: 6bbe409b7de206e2318d81ffcf9802bb02d4269f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
if (WITH_TESTS)
set(PROJECT_TEST_LIBRARIES apt-private)
find_path(GTEST_SRCPATH src/gtest.cc
/usr/src/googletest/googletest
/usr/src/googletest
/usr/src/gtest
)
find_package(GTest)
set(GTEST_DEPENDENCIES)
if(NOT GTEST_FOUND AND EXISTS ${GTEST_SRCPATH})
include(ExternalProject)
ExternalProject_Add(gtest PREFIX ./gtest
SOURCE_DIR ${GTEST_SRCPATH}
INSTALL_COMMAND true)
link_directories(${CMAKE_CURRENT_BINARY_DIR}/gtest/src/gtest-build)
link_directories(${CMAKE_CURRENT_BINARY_DIR}/gtest/src/gtest-build/lib)
set(GTEST_LIBRARIES "-lgtest")
set(GTEST_DEPENDENCIES "gtest")
set(GTEST_FOUND TRUE)
find_path(GTEST_INCLUDE_DIRS NAMES gtest/gtest.h PATHS ${GTEST_SRCPATH}/include)
message(STATUS "Found GTest at ${GTEST_SRCPATH}, headers at ${GTEST_INCLUDE_DIRS}")
endif()
if (NOT GTEST_FOUND)
message(FATAL_ERROR "Could not find GTest")
endif()
# gtest produces some warnings with the set of warnings we activate,
# so disable the offending warnings while compiling tests for now
add_optional_compile_options(Wno-undef)
add_optional_compile_options(Wno-ctor-dtor-privacy)
# Do not force override for gtest, gtest is missing override specifiers
add_optional_compile_options(Wno-suggest-override)
# Definition of the C++ files used to build the test binary - note that this
# is expanded at CMake time, so you have to rerun cmake if you add or remove
# a file (you can just run cmake . in the build directory)
file(GLOB files gtest_runner.cc *-helpers.cc *_test.cc)
add_executable(lib${PROJECT_NAME}_test ${files})
target_include_directories(lib${PROJECT_NAME}_test PRIVATE ${GTEST_INCLUDE_DIRS})
target_link_libraries(lib${PROJECT_NAME}_test ${GTEST_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${PROJECT_TEST_LIBRARIES})
if (GTEST_DEPENDENCIES)
add_dependencies(lib${PROJECT_NAME}_test ${GTEST_DEPENDENCIES})
endif()
add_test(NAME ${PROJECT_NAME}Tests
COMMAND lib${PROJECT_NAME}_test
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
endif()
|