#[===================================================================[ docs target (optional) #]===================================================================] find_package (Doxygen) if (TARGET Doxygen::doxygen) set (doc_srcs docs/source.dox) file (GLOB_RECURSE other_docs docs/*.md) list (APPEND doc_srcs "${other_docs}") # read the source config and make a modified one # that points the output files to our build directory file (READ "${CMAKE_CURRENT_SOURCE_DIR}/docs/source.dox" dox_content) string (REGEX REPLACE "[\t ]*OUTPUT_DIRECTORY[\t ]*=(.*)" "OUTPUT_DIRECTORY=${CMAKE_BINARY_DIR}\n\\1" new_config "${dox_content}") file (WRITE "${CMAKE_BINARY_DIR}/source.dox" "${new_config}") add_custom_target (docs COMMAND "${DOXYGEN_EXECUTABLE}" "${CMAKE_BINARY_DIR}/source.dox" BYPRODUCTS "${CMAKE_BINARY_DIR}/html_doc/index.html" WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/docs" SOURCES "${doc_srcs}") if (is_multiconfig) set_property ( SOURCE ${doc_srcs} APPEND PROPERTY HEADER_FILE_ONLY true) endif () else () message (STATUS "doxygen executable not found -- skipping docs target") endif ()