From 540ae70a528d37b1fa6564156ad8ba2063ab0db4 Mon Sep 17 00:00:00 2001 From: "Azamat H. Hackimov" Date: Fri, 9 Mar 2018 20:20:18 +0500 Subject: [PATCH] Fix compiling in Windows MSVC --- test/CMakeLists.txt | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index a95f5f3..125a852 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,26 +1,34 @@ include(ExternalProject) +if(MSVC) + # MS Visual Studio expects lib prefix on static libraries, + # but CMake compiles them without prefix + # See https://gitlab.kitware.com/cmake/cmake/issues/17338 + set(CMAKE_STATIC_LIBRARY_PREFIX "") +endif() + ExternalProject_Add( googletest_project SOURCE_DIR "${CMAKE_SOURCE_DIR}/test/gtest-1.8.0" INSTALL_DIR "${CMAKE_BINARY_DIR}/prefix" - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= -DBUILD_GMOCK=ON + CMAKE_ARGS + -DCMAKE_INSTALL_PREFIX:PATH= + -DBUILD_GMOCK=ON + -Dgtest_force_shared_crt=ON ) add_library(gmock UNKNOWN IMPORTED) set_target_properties(gmock PROPERTIES - IMPORTED_LOCATION ${PROJECT_BINARY_DIR}/prefix/lib/libgmock.a + IMPORTED_LOCATION + ${PROJECT_BINARY_DIR}/prefix/lib/${CMAKE_STATIC_LIBRARY_PREFIX}gmock${CMAKE_STATIC_LIBRARY_SUFFIX} ) find_package(Threads) include_directories(SYSTEM "${PROJECT_BINARY_DIR}/prefix/include") -set(gtest_force_shared_crt ${MSVC_SHARED_RT} CACHE BOOL - "Use shared (DLL) run-time lib even when Google Test built as a static lib.") - if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR - CMAKE_CXX_COMPILER_ID MATCHES "Clang") + CMAKE_CXX_COMPILER_ID MATCHES "Clang") set(yaml_test_flags "-Wno-variadic-macros -Wno-sign-compare") if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") @@ -38,18 +46,18 @@ add_sources(${test_sources} ${test_headers}) include_directories(${YAML_CPP_SOURCE_DIR}/test) add_executable(run-tests - ${test_sources} - ${test_headers} + ${test_sources} + ${test_headers} ) add_dependencies(run-tests googletest_project) set_target_properties(run-tests PROPERTIES - COMPILE_FLAGS "${yaml_c_flags} ${yaml_cxx_flags} ${yaml_test_flags}" + COMPILE_FLAGS "${yaml_c_flags} ${yaml_cxx_flags} ${yaml_test_flags}" ) target_link_libraries(run-tests - yaml-cpp - gmock - ${CMAKE_THREAD_LIBS_INIT}) + yaml-cpp + gmock + ${CMAKE_THREAD_LIBS_INIT}) add_test(yaml-test ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/run-tests)