Skip to content
Snippets Groups Projects

Draft: Build tests when 'make test'

Open Sergey Kosukhin requested to merge feature-delay-tests into master
1 file
+ 30
19
Compare changes
  • Side-by-side
  • Inline
+ 30
19
@@ -2,29 +2,40 @@ enable_language(CXX)
find_package(GTest 1.13)
if(NOT GTest_FOUND)
message(CHECK_START "Fetching external GTest")
if ("${CMAKE_VERSION}" VERSION_GREATER_EQUAL "3.24")
cmake_policy(SET CMP0135 NEW)
endif()
include(FetchContent)
FetchContent_Declare(googletest
include(ExternalProject)
ExternalProject_Add(googletest
URL https://github.com/google/googletest/archive/refs/tags/v1.13.0.tar.gz
URL_HASH MD5=95b29f0038ec84a611df951d74d99897
PREFIX "${CMAKE_BINARY_DIR}/_deps/googletest"
SOURCE_DIR "${CMAKE_BINARY_DIR}/_deps/googletest-src"
BINARY_DIR "${CMAKE_BINARY_DIR}/_deps/googletest-build"
CMAKE_ARGS
-DBUILD_GMOCK:BOOL=OFF
-DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS}
-Dgtest_disable_pthreads:BOOL=ON
STEP_TARGETS build
EXCLUDE_FROM_ALL TRUE
)
set(INSTALL_GTEST OFF CACHE BOOL "Disable installation of googletest")
set(BUILD_GMOCK OFF CACHE BOOL "Do not build the googlemock subproject")
FetchContent_MakeAvailable(googletest)
# GTest puts its build artifacts to ${CMAKE_BINARY_DIR} instead of
# ${CMAKE_CURRENT_BINARY_DIR}. Therefore, we have to make it behave:
set_target_properties(gtest_main gtest
PROPERTIES
RUNTIME_OUTPUT_DIRECTORY "${googletest_BINARY_DIR}/bin"
LIBRARY_OUTPUT_DIRECTORY "${googletest_BINARY_DIR}/lib"
ARCHIVE_OUTPUT_DIRECTORY "${googletest_BINARY_DIR}/lib"
PDB_OUTPUT_DIRECTORY "${googletest_BINARY_DIR}/bin"
COMPILE_PDB_OUTPUT_DIRECTORY "${googletest_BINARY_DIR}/lib"
add_library(googletest-external INTERFACE)
add_dependencies(googletest-external googletest-build)
target_compile_features(googletest-external
INTERFACE
cxx_std_14
)
message(CHECK_PASS "done")
target_include_directories(googletest-external
INTERFACE
"${CMAKE_BINARY_DIR}/_deps/googletest-src/googletest/include"
)
target_link_directories(googletest-external
INTERFACE
"${CMAKE_BINARY_DIR}/_deps/googletest-build/lib"
)
target_link_libraries(googletest-external
INTERFACE
gtest_main
gtest
)
add_library(GTest::gtest_main ALIAS googletest-external)
endif()
include("${PROJECT_SOURCE_DIR}/cmake/gtest_helper.cmake")
Loading