diff options
author | Joseph Herlant <aerostitch@debian.org> | 2019-10-29 21:50:59 -0700 |
---|---|---|
committer | jkoan <jkoan@gmx.de> | 2023-01-06 09:34:37 +0100 |
commit | cc615018aca61d342f5139ebc560abc2fa0e272b (patch) | |
tree | fc7593192ee38888e1bf097e744e83ecc20c065f | |
parent | a6257af1686eaec68b25f217614f161c3dad3554 (diff) | |
download | navit-add_tests.tar.gz |
Googletest installs but binary linking failsadd_tests
-rwxr-xr-x | CMakeLists.txt | 91 | ||||
-rw-r--r-- | cmake/googletest.cmake | 15 |
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 "" +) |