From 85bbc2e1dda4ca21efd3b1ec253ca3c5deaec38f Mon Sep 17 00:00:00 2001 From: Alex Selimov Date: Wed, 16 Apr 2025 07:55:10 -0400 Subject: [PATCH] Guard testing code to avoid problems when including using FetchContent.MakeAvailable --- CMakeLists.txt | 47 +++++++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a62fd7c..d2bebc5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,6 @@ cmake_minimum_required(VERSION 3.9) set(NAME "Vec3") project(${NAME}) -enable_testing() set(CMAKE_EXPORT_COMPILE_COMMANDS ON) add_compile_options(-Wall -Wextra -Wpedantic) @@ -11,28 +10,32 @@ set(CMAKE_CXX_STANDARD 17) include_directories(include) add_subdirectory(include) -add_subdirectory(tests) -# Doxygen Build -option(BUILD_DOC "Build Documentation" ON) +if (PROJECT_IS_TOP_LEVEL) + enable_testing() + add_subdirectory(tests) -find_package(Doxygen) -if(DOXYGEN_FOUND) - set(BUILD_DOC_DIR ${CMAKE_SOURCE_DIR}/build/docs) - if(NOT EXISTS ${BUILD_DOC_DIR}) - file(MAKE_DIRECTORY ${BUILD_DOC_DIR}) - endif() + # Doxygen Build + option(BUILD_DOC "Build Documentation" ON) - set(DOXYGEN_IN ${CMAKE_CURRENT_SOURCE_DIR}/docs/Doxyfile) - set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) - configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY) + find_package(Doxygen) + if(DOXYGEN_FOUND) + set(BUILD_DOC_DIR ${CMAKE_SOURCE_DIR}/build/docs) + if(NOT EXISTS ${BUILD_DOC_DIR}) + file(MAKE_DIRECTORY ${BUILD_DOC_DIR}) + endif() - message("Doxygen buld started") - add_custom_target(Doxygen_${NAME} ALL - COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT} - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT "Generating API documentation with Doxygen" - VERBATIM) -else(DOXYGEN_FOUND) - message("Doxygen needs to be installed to generate the documentation.") -endif(DOXYGEN_FOUND) + set(DOXYGEN_IN ${CMAKE_CURRENT_SOURCE_DIR}/docs/Doxyfile) + set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) + configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY) + + message("Doxygen buld started") + add_custom_target(Doxygen_${NAME} ALL + COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Generating API documentation with Doxygen" + VERBATIM) + else(DOXYGEN_FOUND) + message("Doxygen needs to be installed to generate the documentation.") + endif(DOXYGEN_FOUND) +endif()