summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Herlant <aerostitch@debian.org>2019-10-29 21:50:59 -0700
committerjkoan <jkoan@gmx.de>2023-01-06 09:34:37 +0100
commitcc615018aca61d342f5139ebc560abc2fa0e272b (patch)
treefc7593192ee38888e1bf097e744e83ecc20c065f
parenta6257af1686eaec68b25f217614f161c3dad3554 (diff)
downloadnavit-add_tests.tar.gz
Googletest installs but binary linking failsadd_tests
-rwxr-xr-xCMakeLists.txt91
-rw-r--r--cmake/googletest.cmake15
2 files changed, 64 insertions, 42 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5ac167c46..3b416035e 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -937,46 +937,53 @@ option(ENABLE_UNIT_TESTS "Enable unit tests" ON)
message(STATUS "Enable testing: ${ENABLE_UNIT_TESTS}")
if(ENABLE_UNIT_TESTS)
- include(ExternalProject)
- ExternalProject_Add(
- googletest
- SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/googletest-src"
- BINARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/googletest-build"
- GIT_REPOSITORY https://github.com/google/googletest.git
- GIT_TAG release-1.8.0
- CONFIGURE_COMMAND ""
- BUILD_COMMAND ""
- INSTALL_COMMAND ""
- TEST_COMMAND ""
- )
- execute_process(
- COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
- WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
- )
- execute_process(
- COMMAND "${CMAKE_COMMAND}" --build .
- WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
- )
- add_subdirectory(
- "${CMAKE_CURRENT_SOURCE_DIR}/googletest-src"
- "${CMAKE_CURRENT_SOURCE_DIR}/googletest-build"
- )
-
- add_executable(unit_tests "")
-
- target_sources(
- unit_tests
- PRIVATE
- calculator.cpp
- main.cpp
- )
-
- target_link_libraries(
- unit_tests
- PRIVATE
- calculator
- gtest_main
- )
-
- add_test(unit ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}/unit_tests)
+ configure_file(cmake/googletest.cmake googletest-download/CMakeLists.txt)
+ execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
+ RESULT_VARIABLE result
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download )
+ if(result)
+ message(FATAL_ERROR "CMake step for googletest failed: ${result}")
+ endif()
+ execute_process(COMMAND ${CMAKE_COMMAND} --build .
+ RESULT_VARIABLE result
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download )
+ if(result)
+ message(FATAL_ERROR "Build step for googletest failed: ${result}")
+ endif()
+
+ # Prevent overriding the parent project's compiler/linker
+ # settings on Windows
+ set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
+
+ # Add googletest directly to our build. This defines
+ # the gtest and gtest_main targets.
+ add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/googletest-src
+ ${CMAKE_CURRENT_BINARY_DIR}/googletest-build
+ EXCLUDE_FROM_ALL)
+
+ # The gtest/gtest_main targets carry header search path
+ # dependencies automatically when using CMake 2.8.11 or
+ # later. Otherwise we have to add them here ourselves.
+ if (CMAKE_VERSION VERSION_LESS 2.8.11)
+ include_directories("${gtest_SOURCE_DIR}/include")
+ endif()
+
+ # Now simply link against gtest or gtest_main as needed. Eg
+ add_executable(unit_tests "")
+
+ target_sources(
+ unit_tests
+ PRIVATE
+ search.cpp
+ main.cpp
+ )
+
+ target_link_libraries(
+ unit_tests
+ PRIVATE
+ navit
+ gtest_main
+ )
+
+ add_test(unit ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}/unit_tests)
endif()
diff --git a/cmake/googletest.cmake b/cmake/googletest.cmake
new file mode 100644
index 000000000..5411b8176
--- /dev/null
+++ b/cmake/googletest.cmake
@@ -0,0 +1,15 @@
+cmake_minimum_required(VERSION 2.8.2)
+
+project(googletest-download NONE)
+
+include(ExternalProject)
+ExternalProject_Add(googletest
+ GIT_REPOSITORY https://github.com/google/googletest.git
+ GIT_TAG release-1.10.0
+ SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/googletest-src"
+ BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/googletest-build"
+ CONFIGURE_COMMAND ""
+ BUILD_COMMAND ""
+ INSTALL_COMMAND ""
+ TEST_COMMAND ""
+)