Skip to content

Commit

Permalink
find_package gtest or fetch gtest ; and use it for testing.Remove usa…
Browse files Browse the repository at this point in the history
…ge of the old one
  • Loading branch information
fredroy committed Jan 31, 2024
1 parent ea210dc commit ccdc89f
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 4 deletions.
54 changes: 50 additions & 4 deletions Sofa/framework/Testing/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,54 @@ project(Sofa.Testing LANGUAGES CXX)
# Enable testing features of cmake, like the add_test() command.
enable_testing()

# add gtest library
# set(gtest_disable_pthreads ON CACHE INTERNAL "")
add_subdirectory(extlibs/gtest)
# add custom gtest main
# add googletest library
# set(googletest_disable_pthreads ON CACHE INTERNAL "")
find_package(googletest QUIET)
if(NOT googletest_FOUND AND SOFA_ALLOW_FETCH_DEPENDENCIES)
message("${PROJECT_NAME}: DEPENDENCY googletest NOT FOUND. SOFA_ALLOW_FETCH_DEPENDENCIES is ON, fetching googletest...")

include(FetchContent)
FetchContent_Declare(googletest
GIT_REPOSITORY https://github.com/google/googletest
GIT_TAG v1.14.0
)

FetchContent_GetProperties(googletest)
if(NOT googletest_POPULATED)
FetchContent_Populate(googletest)

set(BUILD_GMOCK OFF CACHE INTERNAL "")
set(BUILD_SHARED_LIBS ON CACHE BOOL "" FORCE)
set(INSTALL_GTEST OFF CACHE BOOL "" FORCE) # rely on SOFA macros
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
set(gtest_disable_pthreads OFF CACHE BOOL "" FORCE)

message("${PROJECT_NAME}: adding subdirectory ${googletest_SOURCE_DIR}")

add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR})

target_compile_options(gtest_main PRIVATE "-GTEST_LINKED_AS_SHARED_LIBRARY=0")
target_compile_options(gtest PRIVATE "-DGTEST_CREATE_SHARED_LIBRARY=1")

include(SofaMacros)
sofa_create_package_with_targets(
PACKAGE_NAME GTest
PACKAGE_VERSION 1.14.0
TARGETS gtest AUTO_SET_TARGET_PROPERTIES
INCLUDE_SOURCE_DIR "include"
INCLUDE_INSTALL_DIR "extlibs/GTest"
)

set_target_properties(gtest PROPERTIES FOLDER Testing)
set_target_properties(gtest_main PROPERTIES FOLDER Testing)
endif()
elseif (NOT googletest_FOUND)
message(FATAL_ERROR "${PROJECT_NAME}: DEPENDENCY googletest NOT FOUND. SOFA_ALLOW_FETCH_DEPENDENCIES is OFF and thus cannot be fetched. Install googletest, or enable SOFA_ALLOW_FETCH_DEPENDENCIES to fix this issue.")
endif()



# add custom googletest main
add_subdirectory(SofaGTestMain)

set(SOFATESTINGSRC_ROOT "src/sofa/testing")
Expand Down Expand Up @@ -39,6 +83,8 @@ sofa_find_package(Sofa.Simulation.Graph REQUIRED)

add_library(${PROJECT_NAME} SHARED ${HEADER_FILES} ${SOURCE_FILES})
target_link_libraries(${PROJECT_NAME} PUBLIC Sofa.Helper Sofa.DefaultType Sofa.Core Sofa.Simulation.Graph gtest SofaGTestMain )
target_compile_options(${PROJECT_NAME} PUBLIC "-DGTEST_LINKED_AS_SHARED_LIBRARY=1")

set(SOFA_TESTING_RESOURCES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/resources")

set_target_properties(${PROJECT_NAME} PROPERTIES FOLDER Sofa.Framework) # IDE folder
Expand Down
10 changes: 10 additions & 0 deletions Sofa/framework/Testing/GTestConfig.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# CMake package configuration file for the gtest library

@PACKAGE_GUARD@
@PACKAGE_INIT@

if(NOT TARGET gtest)
include("${CMAKE_CURRENT_LIST_DIR}/GTestTargets.cmake")
endif()

check_required_components(gtest)

0 comments on commit ccdc89f

Please sign in to comment.