Fix compiling in Windows MSVC

This commit is contained in:
Azamat H. Hackimov 2018-03-09 20:20:18 +05:00
parent 68eb6ef27b
commit 540ae70a52

View File

@ -1,26 +1,34 @@
include(ExternalProject) 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( ExternalProject_Add(
googletest_project googletest_project
SOURCE_DIR "${CMAKE_SOURCE_DIR}/test/gtest-1.8.0" SOURCE_DIR "${CMAKE_SOURCE_DIR}/test/gtest-1.8.0"
INSTALL_DIR "${CMAKE_BINARY_DIR}/prefix" INSTALL_DIR "${CMAKE_BINARY_DIR}/prefix"
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -DBUILD_GMOCK=ON CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
-DBUILD_GMOCK=ON
-Dgtest_force_shared_crt=ON
) )
add_library(gmock UNKNOWN IMPORTED) add_library(gmock UNKNOWN IMPORTED)
set_target_properties(gmock PROPERTIES 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) find_package(Threads)
include_directories(SYSTEM "${PROJECT_BINARY_DIR}/prefix/include") 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 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") set(yaml_test_flags "-Wno-variadic-macros -Wno-sign-compare")
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
@ -38,18 +46,18 @@ add_sources(${test_sources} ${test_headers})
include_directories(${YAML_CPP_SOURCE_DIR}/test) include_directories(${YAML_CPP_SOURCE_DIR}/test)
add_executable(run-tests add_executable(run-tests
${test_sources} ${test_sources}
${test_headers} ${test_headers}
) )
add_dependencies(run-tests googletest_project) add_dependencies(run-tests googletest_project)
set_target_properties(run-tests PROPERTIES 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 target_link_libraries(run-tests
yaml-cpp yaml-cpp
gmock gmock
${CMAKE_THREAD_LIBS_INIT}) ${CMAKE_THREAD_LIBS_INIT})
add_test(yaml-test ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/run-tests) add_test(yaml-test ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/run-tests)