Reuse gtest on system (#1493)

* Reuse gtest on the system

Try to use gtest on the system if found. Avoid using recent CMake
features.

* Set CMP0135 only when using FetchContent

* Add /bigobj option for MSVC

* Support also cmake between 3.14 and 3.20

Older versions provided only GTest::Main target, not currently used
gtest_main. Provide backward compatibility also to old cmake versions.

* Remove redundant variable checking

---------

Co-authored-by: Jiwoo Park <jiwoo_90@naver.com>
This commit is contained in:
Petr Menšík 2023-03-06 03:35:35 +01:00 committed by GitHub
parent c7e959a948
commit 7b69999c37
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,7 +1,17 @@
find_package(GTest)
if(GTest_FOUND)
if(NOT TARGET GTest::gtest_main AND TARGET GTest::Main)
# CMake <3.20
add_library(GTest::gtest_main INTERFACE IMPORTED)
target_link_libraries(GTest::gtest_main INTERFACE GTest::Main)
endif()
else()
if(POLICY CMP0135)
cmake_policy(SET CMP0135 NEW) cmake_policy(SET CMP0135 NEW)
endif()
include(FetchContent) include(FetchContent)
include(GoogleTest)
set(BUILD_GMOCK OFF) set(BUILD_GMOCK OFF)
set(INSTALL_GTEST OFF) set(INSTALL_GTEST OFF)
@ -12,9 +22,10 @@ FetchContent_Declare(
URL https://github.com/google/googletest/archive/main.tar.gz URL https://github.com/google/googletest/archive/main.tar.gz
) )
FetchContent_MakeAvailable(gtest) FetchContent_MakeAvailable(gtest)
endif()
add_executable(httplib-test test.cc) add_executable(httplib-test test.cc)
target_compile_options(httplib-test PRIVATE "$<$<CXX_COMPILER_ID:MSVC>:/utf-8>") target_compile_options(httplib-test PRIVATE "$<$<CXX_COMPILER_ID:MSVC>:/utf-8;/bigobj>")
target_link_libraries(httplib-test PRIVATE httplib GTest::gtest_main) target_link_libraries(httplib-test PRIVATE httplib GTest::gtest_main)
gtest_discover_tests(httplib-test) gtest_discover_tests(httplib-test)