From 32d7d048588feda34bcb61995860850763468579 Mon Sep 17 00:00:00 2001 From: "Timothy D. Prime" Date: Wed, 8 Feb 2017 12:38:41 -0800 Subject: [PATCH 1/2] fixes #1688 protect make debug-test from gtest In simple terms, add_subdirectory() is replaced with ExternalProject_Add(). This change is inspired by https://crascit.com/2015/07/25/cmake-gtest/ with one difference, no download, using the source we already have. Before this change, make debug-test must be preceded by make clean. Otherwise, a subsequent build would be polluted by cmake options made by tests/gtest/. Also removed the changed compiler flags. My test build did not have the affected warnings. --- tests/CMakeLists.txt | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 60b7a4db..a2e53dda 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -43,24 +43,30 @@ if (GTest_FOUND) include_directories(SYSTEM ${GTEST_INCLUDE_DIRS}) else () message(STATUS "GTest not found on the system: will use GTest bundled with this source") - add_subdirectory(gtest) - include_directories(SYSTEM "${gtest_SOURCE_DIR}/include" "${gtest_SOURCE_DIR}") + + include(ExternalProject) + ExternalProject_Add(googletest + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/gtest + BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/gtest + DOWNLOAD_COMMAND "" + UPDATE_COMMAND "" + INSTALL_COMMAND "" + ) + add_library(gtest UNKNOWN IMPORTED) + add_library(gtest_main UNKNOWN IMPORTED) + set_target_properties(gtest PROPERTIES + IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/gtest/libgtest.a + ) + set_target_properties(gtest_main PROPERTIES + IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/gtest/libgtest_main.a + ) + add_dependencies(gtest googletest) + add_dependencies(gtest_main googletest) # Emulate the FindGTest module's variable. - set(GTEST_LIBRARIES gtest) - - # Ignore some warnings when building gtest binaries. - if(NOT MSVC) - set_property(TARGET gtest - APPEND_STRING - PROPERTY - COMPILE_FLAGS " -Wno-undef -Wno-sign-compare") - endif() - - set_property(TARGET gtest - PROPERTY - FOLDER "${folder}") -endif () + set(GTEST_LIBRARIES gtest gtest_main) + include_directories(SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/gtest/include") +endif (GTest_FOUND) file(COPY data/wallet_9svHk1.keys From dd3485492d1b7af27b19bcc9d86d4f0941b18ac6 Mon Sep 17 00:00:00 2001 From: "Timothy D. Prime" Date: Wed, 8 Feb 2017 13:34:35 -0800 Subject: [PATCH 2/2] make previous change portable Use cmake's _PREFIX and _SUFFIX to determine the library location. --- tests/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index a2e53dda..b3c40799 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -55,10 +55,10 @@ else () add_library(gtest UNKNOWN IMPORTED) add_library(gtest_main UNKNOWN IMPORTED) set_target_properties(gtest PROPERTIES - IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/gtest/libgtest.a + IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/gtest/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}" ) set_target_properties(gtest_main PROPERTIES - IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/gtest/libgtest_main.a + IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/gtest/${CMAKE_STATIC_LIBRARY_PREFIX}gtest_main${CMAKE_STATIC_LIBRARY_SUFFIX}" ) add_dependencies(gtest googletest) add_dependencies(gtest_main googletest)