65 lines
1.7 KiB
CMake
65 lines
1.7 KiB
CMake
|
find_package(Threads REQUIRED)
|
||
|
include(ExternalProject)
|
||
|
|
||
|
if(MSYS OR MINGW)
|
||
|
set(DISABLE_PTHREADS ON)
|
||
|
else()
|
||
|
set(DISABLE_PTHREADS OFF)
|
||
|
endif()
|
||
|
|
||
|
if (MSVC)
|
||
|
set(RELEASE_LIB_DIR ReleaseLibs)
|
||
|
set(DEBUG_LIB_DIR DebugLibs)
|
||
|
else()
|
||
|
set(RELEASE_LIB_DIR "")
|
||
|
set(DEBUG_LIB_DIR "")
|
||
|
endif()
|
||
|
|
||
|
set(GTEST_CMAKE_ARGS
|
||
|
"-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
|
||
|
"-Dgtest_force_shared_crt=ON"
|
||
|
"-Dgtest_disable_pthreads:BOOL=${DISABLE_PTHREADS}")
|
||
|
set(GTEST_RELEASE_LIB_DIR "")
|
||
|
set(GTEST_DEBUGLIB_DIR "")
|
||
|
if (MSVC)
|
||
|
set(GTEST_CMAKE_ARGS ${GTEST_CMAKE_ARGS}
|
||
|
"-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=${DEBUG_LIB_DIR}"
|
||
|
"-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=${RELEASE_LIB_DIR}")
|
||
|
set(GTEST_LIB_DIR)
|
||
|
endif()
|
||
|
|
||
|
set(GTEST_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/gtest")
|
||
|
|
||
|
ExternalProject_Add(gtest
|
||
|
GIT_REPOSITORY https://chromium.googlesource.com/external/googletest
|
||
|
TIMEOUT 10
|
||
|
PREFIX "${GTEST_PREFIX}"
|
||
|
CMAKE_ARGS "${GTEST_CMAKE_ARGS}"
|
||
|
LOG_DOWNLOAD ON
|
||
|
LOG_CONFIGURE ON
|
||
|
LOG_BUILD ON
|
||
|
# Disable install
|
||
|
INSTALL_COMMAND ""
|
||
|
)
|
||
|
|
||
|
set(LIB_PREFIX "${CMAKE_STATIC_LIBRARY_PREFIX}")
|
||
|
set(LIB_SUFFIX "${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
||
|
set(GTEST_LOCATION "${GTEST_PREFIX}/src/gtest-build")
|
||
|
set(GTEST_DEBUG_LIBRARIES
|
||
|
"${GTEST_LOCATION}/${DEBUG_LIB_DIR}/${LIB_PREFIX}gtest${LIB_SUFFIX}"
|
||
|
"${CMAKE_THREAD_LIBS_INIT}")
|
||
|
SET(GTEST_RELEASE_LIBRARIES
|
||
|
"${GTEST_LOCATION}/${RELEASE_LIB_DIR}/${LIB_PREFIX}gtest${LIB_SUFFIX}"
|
||
|
"${CMAKE_THREAD_LIBS_INIT}")
|
||
|
|
||
|
if(MSVC_VERSION EQUAL 1700)
|
||
|
add_definitions(-D_VARIADIC_MAX=10)
|
||
|
endif()
|
||
|
|
||
|
ExternalProject_Get_Property(gtest source_dir)
|
||
|
include_directories(${source_dir}/include)
|
||
|
include_directories(${source_dir}/gtest/include)
|
||
|
|
||
|
ExternalProject_Get_Property(gtest binary_dir)
|
||
|
link_directories(${binary_dir})
|