Skip to content

Commit

Permalink
CMake: add CPPDAP_USE_EXTERNAL_GTEST_PACKAGE option
Browse files Browse the repository at this point in the history
  • Loading branch information
topazus authored and ben-clayton committed Jan 2, 2024
1 parent bbde7fb commit ae76a38
Showing 1 changed file with 25 additions and 10 deletions.
35 changes: 25 additions & 10 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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_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_GTEST_PACKAGE "Use googletest with find_package()" OFF)

###########################################################
# Directories
Expand All @@ -59,7 +60,7 @@ set_if_not_defined(CPPDAP_GOOGLETEST_DIR ${CPPDAP_THIRD_PARTY_DIR}/googletest)
###########################################################
# Submodules
###########################################################
if(CPPDAP_BUILD_TESTS)
if(CPPDAP_BUILD_TESTS AND NOT CPPDAP_USE_EXTERNAL_GTEST_PACKAGE)
if(NOT EXISTS ${CPPDAP_GOOGLETEST_DIR}/.git)
message(WARNING "third_party/googletest submodule missing.")
message(WARNING "Run: `git submodule update --init` to build tests.")
Expand Down Expand Up @@ -161,7 +162,7 @@ function(cppdap_set_json_links target)
target_link_libraries(${target} PRIVATE JsonCpp::JsonCpp)
else()
target_include_directories(${target} PRIVATE "${CPPDAP_JSON_DIR}/include/")
endif()
endif()
endfunction(cppdap_set_json_links)

function(cppdap_set_target_options target)
Expand Down Expand Up @@ -247,7 +248,7 @@ write_basic_package_version_file(
)
configure_package_config_file(
${CPPDAP_CMAKE_CONFIG_TEMPLATE}
"${CPPDAP_CMAKE_PROJECT_CONFIG_FILE}"
"${CPPDAP_CMAKE_PROJECT_CONFIG_FILE}"
INSTALL_DESTINATION ${CPPDAP_CONFIG_INSTALL_DIR}
)

Expand Down Expand Up @@ -276,6 +277,8 @@ DESTINATION ${CPPDAP_CONFIG_INSTALL_DIR})

# tests
if(CPPDAP_BUILD_TESTS)
enable_testing()

set(DAP_TEST_LIST
${CPPDAP_SRC_DIR}/any_test.cpp
${CPPDAP_SRC_DIR}/chan_test.cpp
Expand All @@ -290,16 +293,24 @@ if(CPPDAP_BUILD_TESTS)
${CPPDAP_SRC_DIR}/traits_test.cpp
${CPPDAP_SRC_DIR}/typeinfo_test.cpp
${CPPDAP_SRC_DIR}/variant_test.cpp
${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/
)
if(CPPDAP_USE_EXTERNAL_GTEST_PACKAGE)
find_package(GTest REQUIRED)
else()
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_test(NAME cppdap-unittests COMMAND cppdap-unittests)

target_include_directories(cppdap-unittests PUBLIC ${DAP_TEST_INCLUDE_DIR} )
set_target_properties(cppdap-unittests PROPERTIES
Expand All @@ -312,7 +323,11 @@ if(CPPDAP_BUILD_TESTS)
endif()

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)

# fuzzer
Expand Down

0 comments on commit ae76a38

Please sign in to comment.