Skip to content

Commit

Permalink
feat: uplift gtest to 1.12.1
Browse files Browse the repository at this point in the history
  • Loading branch information
Nic Holthaus committed Dec 9, 2024
1 parent 17b3274 commit d607c07
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 78 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ bld/
[Mm][Ss][Vv][Cc]*
[Gg][Cc][Cc]*

#CLion
.idea/
/*build*/

#Visual studio code
.vscode

Expand Down
101 changes: 23 additions & 78 deletions 3rdParty/gtest/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,78 +1,23 @@
#parent must define VERSION_GTEST

cmake_minimum_required(VERSION 3.0.0 FATAL_ERROR)
PROJECT(gtest)
STRING(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UPPER)

SET(VERSION_${PROJECT_NAME_UPPER} "?.?.?" CACHE STRING "${PROJECT_NAME} version string")
SET(${PROJECT_NAME_UPPER}_DIR ${CMAKE_CURRENT_BINARY_DIR}/src CACHE STRING "${PROJECT_NAME} source directory")

# ------------------------------------------------------------------------------------------------------------------------------
# LIBRARY LOCATION: Library location for various build types/generators
# ------------------------------------------------------------------------------------------------------------------------------

if((${CMAKE_GENERATOR} STREQUAL "Ninja") OR (${CMAKE_GENERATOR} STREQUAL "Unix Makefiles"))
SET(LIB_DIR ${${PROJECT_NAME_UPPER}_DIR}/googletest/${CMAKE_FIND_LIBRARY_PREFIXES}${PROJECT_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX})
else() # visual studio variants
SET(DEBUG_LIB ${${PROJECT_NAME_UPPER}_DIR}/googletest/Debug/${CMAKE_FIND_LIBRARY_PREFIXES}${PROJECT_NAME}${CMAKE_FIND_LIBRARY_SUFFIXES})
SET(RELEASE_LIB ${${PROJECT_NAME_UPPER}_DIR}/googletest/Release/${CMAKE_FIND_LIBRARY_PREFIXES}${PROJECT_NAME}${CMAKE_FIND_LIBRARY_SUFFIXES})
SET(MINSIZEREL_LIB ${${PROJECT_NAME_UPPER}_DIR}/googletest/MinSizeRel/${CMAKE_FIND_LIBRARY_PREFIXES}${PROJECT_NAME}${CMAKE_FIND_LIBRARY_SUFFIXES})
SET(RELWITHDEBINFO_LIB ${${PROJECT_NAME_UPPER}_DIR}/googletest/RelWithDebInfo/${CMAKE_FIND_LIBRARY_PREFIXES}${PROJECT_NAME}${CMAKE_FIND_LIBRARY_SUFFIXES})
SET(LIB_DIR ${DEBUG_LIB} ${RELEASE_LIB} ${MINSIZEREL_LIB} ${RELWITHDEBINFO_LIB})
endif()

# ------------------------------------------------------------------------------------------------------------------------------
# EXTERNAL PROJECT: Definition of the external project to build the third-party library
# ------------------------------------------------------------------------------------------------------------------------------

IF(WIN32)
SET(WINDOWS_CMAKE_ARGS -DCMAKE_CXX_FLAGS=/D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING)
ENDIF(WIN32)

include(ExternalProject)
ExternalProject_Add(
${PROJECT_NAME}-ext
URL ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}-${VERSION_${PROJECT_NAME_UPPER}}.zip
URL_MD5 adfafc8512ab65fd3cf7955ef0100ff5
DOWNLOAD_DIR ${${PROJECT_NAME_UPPER}_DIR}
SOURCE_DIR ${${PROJECT_NAME_UPPER}_DIR}
CMAKE_ARGS -DBUILD_GMOCK=OFF -DBUILD_GTEST=ON -Dgtest_force_shared_crt=ON ${WINDOWS_CMAKE_ARGS}
INSTALL_COMMAND ""
BUILD_IN_SOURCE 1
BUILD_BYPRODUCTS ${LIB_DIR}
)

# ------------------------------------------------------------------------------------------------------------------------------
# EXPORT VARIABLES: Variables intended to help other projects find and use this library
# ------------------------------------------------------------------------------------------------------------------------------

# Library
add_library(${PROJECT_NAME} STATIC IMPORTED GLOBAL)
if((${CMAKE_GENERATOR} STREQUAL "Ninja") OR (${CMAKE_GENERATOR} STREQUAL "Unix Makefiles"))
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES
IMPORTED_LOCATION ${LIB_DIR}
)
else() # visual studio variants
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES
IMPORTED_LOCATION_DEBUG ${DEBUG_LIB}
IMPORTED_LOCATION_RELEASE ${RELEASE_LIB}
IMPORTED_LOCATION_MINSIZEREL ${MINSIZEREL_LIB}
IMPORTED_LOCATION_RELWITHDEBINFO ${RELWITHDEBINFO_LIB}
)
ENDIF()

# add pthreads on non-windows platforms
IF(WIN32)
ELSE(WIN32)
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES
INTERFACE_LINK_LIBRARIES -pthread
)
ENDIF(WIN32)

add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-ext)

SET(INCLUDE_DIR ${${PROJECT_NAME_UPPER}_DIR}/googletest/include)
FILE(MAKE_DIRECTORY ${INCLUDE_DIR})
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${INCLUDE_DIR})

MARK_AS_ADVANCED(${PROJECT_NAME_UPPER}_DIR)
if (NOT TARGET googletest)
# Avoid warning about DOWNLOAD_EXTRACT_TIMESTAMP in CMake 3.24:
if (POLICY CMP0135)
cmake_policy(SET CMP0135 NEW)
set(CMAKE_POLICY_DEFAULT_CMP0135 NEW)
endif ()

if (POLICY CMP0077)
cmake_policy(SET CMP0077 NEW)
set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
endif ()

set(gtest_force_shared_crt ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)

include(FetchContent)
FetchContent_Declare(
googletest
URL ${CMAKE_CURRENT_SOURCE_DIR}/googletest-1.12.1.zip
URL_HASH MD5=2648d4138129812611cf6b6b4b497a3b
)
FetchContent_MakeAvailable(googletest)
endif ()
Binary file added 3rdParty/gtest/googletest-1.12.1.zip
Binary file not shown.
Binary file removed 3rdParty/gtest/gtest-1.8.0.zip
Binary file not shown.

0 comments on commit d607c07

Please sign in to comment.