Created
April 23, 2019 03:33
-
-
Save ryankurte/1abfe9c3c8bfd74e1d46bfdbbc2fb83b to your computer and use it in GitHub Desktop.
Googletest vendoring and install detection for cmake
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# CMake GoogleTest vendoring helper | |
# Adapted from https://github.com/snikulov/google-test-examples | |
include(ExternalProject) | |
find_package(PkgConfig REQUIRED) | |
pkg_check_modules(GTEST gtest) | |
set(GTEST_FORCE_SHARED_CRT ON) | |
set(GTEST_DISABLE_PTHREADS OFF) | |
if(MINGW) | |
set(GTEST_DISABLE_PTHREADS ON) | |
endif() | |
# If GTEST_INCLUDE_DIRS and GTEST_LIBS_DIR are not defined, vendor in google test | |
if ((NOT DEFINED GTEST_INCLUDE_DIRS) AND (NOT DEFINED GTEST_LIBS_DIR)) | |
message(STATUS "no googletest install found, vendoring into project") | |
ExternalProject_Add(googletest | |
GIT_REPOSITORY https://github.com/google/googletest.git | |
GIT_SHALLOW true | |
GIT_TAG release-1.8.1 | |
CMAKE_ARGS -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=DebugLibs | |
-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=ReleaseLibs | |
-DCMAKE_CXX_FLAGS=${MSVC_COMPILER_DEFS} | |
-Dgtest_force_shared_crt=${GTEST_FORCE_SHARED_CRT} | |
-Dgtest_disable_pthreads=${GTEST_DISABLE_PTHREADS} | |
-DBUILD_GTEST=ON | |
PREFIX "${CMAKE_CURRENT_BINARY_DIR}" | |
# Disable install step | |
INSTALL_COMMAND "" | |
) | |
# Specify include dir | |
ExternalProject_Get_Property(googletest source_dir) | |
set(GTEST_INCLUDE_DIRS ${source_dir}/googletest/include) | |
# Specify MainTest's link libraries | |
ExternalProject_Get_Property(googletest binary_dir) | |
set(GTEST_LIBS_DIR ${CMAKE_CURRENT_BINARY_DIR}/src/googletest-build/googlemock/gtest) | |
# Use this to gate adding a dependency to the test project (only required when vending) | |
set(GTEST_VENDORED "") | |
endif () | |
# Include GTest stuff | |
message(STATUS "Using googletest from:") | |
message(STATUS " GTEST_INCLUDE_DIRS=${GTEST_INCLUDE_DIRS}") | |
message(STATUS " GTEST_LIBS_DIR=${GTEST_LIBS_DIR}") | |
include_directories(${GTEST_INCLUDE_DIRS}) | |
link_directories(${GTEST_LIBS_DIR}) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment