diff --git a/CMLibBreathe.cmake b/CMLibBreathe.cmake new file mode 100644 index 0000000..fecab0b --- /dev/null +++ b/CMLibBreathe.cmake @@ -0,0 +1,57 @@ +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) + +function(add_breathe_doc) + set(options) + set(oneValueArgs + SOURCE_DIR + BUILD_DIR + CACHE_DIR + HTML_DIR + DOXY_FILE + CONF_FILE + TARGET_NAME + COMMENT + ) + set(multiValueArgs) + + cmake_parse_arguments(BREATHE_DOC + "${options}" + "${oneValueArgs}" + "${multiValueArgs}" + ${ARGN} + ) + + configure_file( + ${BREATHE_DOC_CONF_FILE} + ${BREATHE_DOC_BUILD_DIR}/conf.py + @ONLY + ) + + configure_file( + ${BREATHE_DOC_DOXY_FILE} + ${BREATHE_DOC_BUILD_DIR}/Doxyfile + @ONLY + ) + + add_custom_target(${BREATHE_DOC_TARGET_NAME} + COMMAND + ${SPHINX_EXECUTABLE} + -q + -b html + -c ${BREATHE_DOC_BUILD_DIR} + -d ${BREATHE_DOC_CACHE_DIR} + ${BREATHE_DOC_SOURCE_DIR} + ${BREATHE_DOC_HTML_DIR} + COMMENT + "Building ${BREATHE_DOC_TARGET_NAME} documentation with Breathe, Sphinx and Doxygen" + VERBATIM + ) + + message(STATUS "Added ${BREATHE_DOC_TARGET_NAME} [Breathe+Sphinx+Doxygen] target to build documentation") +endfunction()