From d254803ed1a27f734b6a5b2d1a52b74cdf56a525 Mon Sep 17 00:00:00 2001 From: Andrey Astafyev Date: Sat, 17 Aug 2019 11:19:08 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=BA=D0=B0=20=D1=84?= =?UTF-8?q?=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B9=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D0=B3=D0=B5=D0=BD=D0=B5=D1=80=D0=B0=D1=86=D0=B8=D0=B8=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMLibBreathe.cmake | 37 +++++++++++++++++++++++++------------ CMLibDoxygen.cmake | 22 +++++++++++++++------- 2 files changed, 40 insertions(+), 19 deletions(-) diff --git a/CMLibBreathe.cmake b/CMLibBreathe.cmake index 37ea098..9156701 100644 --- a/CMLibBreathe.cmake +++ b/CMLibBreathe.cmake @@ -1,17 +1,27 @@ -set(BUILD_BREATHE_DOC OFF CACHE STRING "Enable documntation in Breathe format") -set_property(CACHE BUILD_BREATHE_DOC PROPERTY STRINGS ON OFF) +set(BREATHE_FOUND AUTO CACHE STRING "Enable Breathe documentation generator") +set_property(CACHE BREATHE_FOUND PROPERTY STRINGS ON OFF AUTO) + +find_package(Doxygen) +find_package(Perl) +set(Python_ADDITIONAL_VERSIONS 3.7 3.6 3.5 3.4 3.3 3.2) +find_package(PythonInterp) +if (PYTHONINTERP_FOUND) + find_package(Sphinx) + include(FindPythonModule) + find_python_module(breathe) + find_python_module(recommonmark) + if(DOXYGEN_FOUND AND PERL_FOUND AND PYTHONINTERP_FOUND AND SPHINX_FOUND AND breathe_FOUND AND recommonmark_FOUND) + set(BREATHE_FOUND ON CACHE FORCE) + else() + set(BREATHE_FOUND OFF CACHE FORCE) + endif() +else() + set(BREATHE_FOUND OFF CACHE FORCE) +endif() + function(add_breathe_target) - if(BUILD_BREATHE_DOC) - find_package(Doxygen REQUIRED) - find_package(Perl REQUIRED) - set(Python_ADDITIONAL_VERSIONS 3.7 3.6 3.5 3.4 3.3 3.2) - find_package(PythonInterp REQUIRED) - find_package(Sphinx REQUIRED) - include(FindPythonModule) - find_python_module(breathe REQUIRED) - find_python_module(recommonmark REQUIRED) - + if(BREATHE_FOUND) set(options) set(oneValueArgs SOURCE_DIR BUILD_DIR CACHE_DIR HTML_DIR DOXY_FILE CONF_FILE TARGET_NAME COMMENT) set(multiValueArgs) @@ -28,5 +38,8 @@ function(add_breathe_target) ${_BREATHE_HTML_DIR} COMMENT "Building ${_BREATHE_TARGET_NAME} documentation with Breathe" ) + else() + add_custom_target(${_BREATHE_TARGET_NAME} VERBATIM + COMMENT "Breathe is not found. Skipping target ${_BREATHE_TARGET_NAME} build") endif() endfunction() diff --git a/CMLibDoxygen.cmake b/CMLibDoxygen.cmake index 95816a6..9014e8c 100644 --- a/CMLibDoxygen.cmake +++ b/CMLibDoxygen.cmake @@ -1,10 +1,16 @@ -option(BUILD_DOXYGEN_DOC "Build documentation with Doxygen" OFF) -set_property(CACHE BUILD_DOXYGEN_DOC PROPERTY STRINGS ON OFF) +set(DOXYGEN_FOUND AUTO CACHE STRING "Enable Doxygen documentation generator") +set_property(CACHE DOXYGEN_FOUND PROPERTY STRINGS ON OFF AUTO) + +find_package(Doxygen) +if (DOXYGEN_FOUND) + set(DOXYGEN_FOUND ON CACHE FORCE) +else() + set(DOXYGEN_FOUND OFF CACHE FORCE) +endif() + function(add_doxygen_target) - if (BUILD_DOXYGEN_DOC) - find_package(Doxygen REQUIRED) - + if (DOXYGEN_FOUND) set(options) set(oneValueArgs TARGET_NAME IN OUT) set(multiValueArgs) @@ -18,7 +24,9 @@ function(add_doxygen_target) COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "Generating API documentation with Doxygen" - VERBATIM ) + VERBATIM) + else() + add_custom_target(${_DOXYGEN_TARGET_NAME} VERBATIM + COMMENT "Doxygen is not found. Skipping target ${_BREATHE_TARGET_NAME} build") endif() endfunction() -