32 lines
1.5 KiB
CMake
32 lines
1.5 KiB
CMake
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)
|