macro(CONFIGURE_DOXYGEN_FILE DOXYGEN_CONFIG_FILE FILE_NAME_SUFFIX) if(EXISTS ${PROJECT_SOURCE_DIR}/${DOXYGEN_CONFIG_FILE}) file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/doxyfile-${FILE_NAME_SUFFIX}") file(READ ${PROJECT_SOURCE_DIR}/${DOXYGEN_CONFIG_FILE} DOXYFILE_CONTENTS) string(REPLACE "\\\n" " " DOXYFILE_CONTENTS "${DOXYFILE_CONTENTS}") string(REPLACE "\n" ";" DOXYFILE_LINES "${DOXYFILE_CONTENTS}") foreach(LINE IN LISTS DOXYFILE_LINES) if(LINE STRGREATER "") string(REGEX MATCH "^[a-zA-Z]([^ ])+" DOXY_PARAM ${LINE}) if(DEFINED DOXY_${DOXY_PARAM}) STRING(REGEX REPLACE "=([^\n])+" "= ${DOXY_${DOXY_PARAM}}" LINE ${LINE}) endif(DEFINED DOXY_${DOXY_PARAM}) endif() file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/doxyfile-${FILE_NAME_SUFFIX} "${LINE}\n") endforeach() else() MESSAGE(SEND_ERROR "Doxygen configuration file '${DOXYGEN_CONFIG_FILE}' not found, can`t generate documentation") endif() endmacro(CONFIGURE_DOXYGEN_FILE) macro(ADD_DOCUMENTATION TARGET DOXYGEN_CONFIG_FILE) if(DOXYGEN_FOUND) configure_doxygen_file(${DOXYGEN_CONFIG_FILE} ${TARGET}) add_custom_target("genereate.${TARGET}" COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/doxyfile-${TARGET}) add_custom_target("${TARGET}" COMMAND ${CMAKE_COMMAND} -D COMPONENT=doc -P cmake_install.cmake) add_dependencies("${TARGET}" "genereate.${TARGET}") else(DOXYGEN_FOUND) message(STATUS "Doxygen not found, can`t generate documentation") endif(DOXYGEN_FOUND) endmacro(ADD_DOCUMENTATION)