CMake: add CPPDAP_USE_EXTERNAL_GTEST_PACKAGE option

This commit is contained in:
topazus 2023-12-27 19:56:49 +08:00 committed by Ben Clayton
parent bbde7fb4dc
commit ae76a3888e

View File

@ -40,6 +40,7 @@ option_if_not_defined(CPPDAP_INSTALL_VSCODE_EXAMPLES "Build and install dap exam
option_if_not_defined(CPPDAP_USE_EXTERNAL_NLOHMANN_JSON_PACKAGE "Use nlohmann_json with find_package() instead of building internal submodule" OFF) option_if_not_defined(CPPDAP_USE_EXTERNAL_NLOHMANN_JSON_PACKAGE "Use nlohmann_json with find_package() instead of building internal submodule" OFF)
option_if_not_defined(CPPDAP_USE_EXTERNAL_RAPIDJSON_PACKAGE "Use RapidJSON with find_package()" OFF) option_if_not_defined(CPPDAP_USE_EXTERNAL_RAPIDJSON_PACKAGE "Use RapidJSON with find_package()" OFF)
option_if_not_defined(CPPDAP_USE_EXTERNAL_JSONCPP_PACKAGE "Use JsonCpp with find_package()" OFF) option_if_not_defined(CPPDAP_USE_EXTERNAL_JSONCPP_PACKAGE "Use JsonCpp with find_package()" OFF)
option_if_not_defined(CPPDAP_USE_EXTERNAL_GTEST_PACKAGE "Use googletest with find_package()" OFF)
########################################################### ###########################################################
# Directories # Directories
@ -59,7 +60,7 @@ set_if_not_defined(CPPDAP_GOOGLETEST_DIR ${CPPDAP_THIRD_PARTY_DIR}/googletest)
########################################################### ###########################################################
# Submodules # Submodules
########################################################### ###########################################################
if(CPPDAP_BUILD_TESTS) if(CPPDAP_BUILD_TESTS AND NOT CPPDAP_USE_EXTERNAL_GTEST_PACKAGE)
if(NOT EXISTS ${CPPDAP_GOOGLETEST_DIR}/.git) if(NOT EXISTS ${CPPDAP_GOOGLETEST_DIR}/.git)
message(WARNING "third_party/googletest submodule missing.") message(WARNING "third_party/googletest submodule missing.")
message(WARNING "Run: `git submodule update --init` to build tests.") message(WARNING "Run: `git submodule update --init` to build tests.")
@ -276,6 +277,8 @@ DESTINATION ${CPPDAP_CONFIG_INSTALL_DIR})
# tests # tests
if(CPPDAP_BUILD_TESTS) if(CPPDAP_BUILD_TESTS)
enable_testing()
set(DAP_TEST_LIST set(DAP_TEST_LIST
${CPPDAP_SRC_DIR}/any_test.cpp ${CPPDAP_SRC_DIR}/any_test.cpp
${CPPDAP_SRC_DIR}/chan_test.cpp ${CPPDAP_SRC_DIR}/chan_test.cpp
@ -290,16 +293,24 @@ if(CPPDAP_BUILD_TESTS)
${CPPDAP_SRC_DIR}/traits_test.cpp ${CPPDAP_SRC_DIR}/traits_test.cpp
${CPPDAP_SRC_DIR}/typeinfo_test.cpp ${CPPDAP_SRC_DIR}/typeinfo_test.cpp
${CPPDAP_SRC_DIR}/variant_test.cpp ${CPPDAP_SRC_DIR}/variant_test.cpp
${CPPDAP_GOOGLETEST_DIR}/googletest/src/gtest-all.cc
) )
set(DAP_TEST_INCLUDE_DIR if(CPPDAP_USE_EXTERNAL_GTEST_PACKAGE)
${CPPDAP_GOOGLETEST_DIR}/googlemock/include/ find_package(GTest REQUIRED)
${CPPDAP_GOOGLETEST_DIR}/googletest/ else()
${CPPDAP_GOOGLETEST_DIR}/googletest/include/ list(APPEND DAP_TEST_LIST
) ${CPPDAP_GOOGLETEST_DIR}/googletest/src/gtest-all.cc
)
set(DAP_TEST_INCLUDE_DIR
${CPPDAP_GOOGLETEST_DIR}/googlemock/include/
${CPPDAP_GOOGLETEST_DIR}/googletest/
${CPPDAP_GOOGLETEST_DIR}/googletest/include/
)
endif()
add_executable(cppdap-unittests ${DAP_TEST_LIST}) add_executable(cppdap-unittests ${DAP_TEST_LIST})
add_test(NAME cppdap-unittests COMMAND cppdap-unittests)
target_include_directories(cppdap-unittests PUBLIC ${DAP_TEST_INCLUDE_DIR} ) target_include_directories(cppdap-unittests PUBLIC ${DAP_TEST_INCLUDE_DIR} )
set_target_properties(cppdap-unittests PROPERTIES set_target_properties(cppdap-unittests PROPERTIES
@ -312,7 +323,11 @@ if(CPPDAP_BUILD_TESTS)
endif() endif()
cppdap_set_target_options(cppdap-unittests) cppdap_set_target_options(cppdap-unittests)
target_link_libraries(cppdap-unittests PRIVATE cppdap) if(CPPDAP_USE_EXTERNAL_GTEST_PACKAGE)
target_link_libraries(cppdap-unittests PRIVATE cppdap GTest::gtest)
else()
target_link_libraries(cppdap-unittests PRIVATE cppdap)
endif()
endif(CPPDAP_BUILD_TESTS) endif(CPPDAP_BUILD_TESTS)
# fuzzer # fuzzer