3.2.1.2 : La génération de la documentation
Voici le create_doc.cmake : Petite fonction qui appelle Doxygen avec la bonne configuration (voir section 3.3.1) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# Create the target to create the documentation of the current project # projectName : name of the project to be used # doxyfileName : name of the Doxyfile cmake macro to be used to generate the documentation function(phoenix_create_doc projectName doxyfileName) find_path(doxygen_BINNARY_DIR NAMES doxygen PATHS "${PHOENIX_PREFIX}/bin" ${CMAKE_INSTALL_PREFIX}/bin ${CMAKE_INCLUDE_PATH}/bin /usr/bin /usr/local/bin /bin $ENV{HOME}/usr/bin ) if(doxygen_BINNARY_DIR) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html) message(STATUS "program doxygen found create doc target by project ${projectName}") file(GLOB_RECURSE allDocFiles ${CMAKE_SOURCE_DIR}/*.cpp *.h *.dox) string(REGEX REPLACE "${CMAKE_BINARY_DIR}[^;]+;?" "" allDocFiles "${allDocFiles}") set(PROJECT_LOGO ${CMAKE_CURRENT_SOURCE_DIR}/logo.png) set(OUTPUT_DOC_DIR ${CMAKE_CURRENT_BINARY_DIR}/) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${doxyfileName} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY) set(targetName "phoenix_doc_${projectName}") add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/doc.txt OUTPUT ${targetName} COMMENT "doxygen documentation generation for project ${projectName}" COMMAND doxygen ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile DEPENDS ${allDocFiles} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) add_custom_target(${targetName} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/doc.txt) if(NOT TARGET doc) add_custom_target(doc) endif() add_dependencies(doc ${targetName}) install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION share/${projectName}/doc) else() message(STATUS "program doxygen not found for project ${projectName}") endif() endfunction(phoenix_create_doc) |
Le fichier create_doc.cmake complet :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# Create the target to create the documentation of the current project # projectName : name of the project to be used # doxyfileName : name of the Doxyfile cmake macro to be used to generate the documentation function(phoenix_create_doc projectName doxyfileName) find_path(doxygen_BINNARY_DIR NAMES doxygen PATHS "${PHOENIX_PREFIX}/bin" ${CMAKE_INSTALL_PREFIX}/bin ${CMAKE_INCLUDE_PATH}/bin /usr/bin /usr/local/bin /bin $ENV{HOME}/usr/bin ) if(doxygen_BINNARY_DIR) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html) message(STATUS "program doxygen found create doc target by project ${projectName}") file(GLOB_RECURSE allDocFiles ${CMAKE_SOURCE_DIR}/*.cpp *.h *.dox) string(REGEX REPLACE "${CMAKE_BINARY_DIR}[^;]+;?" "" allDocFiles "${allDocFiles}") set(PROJECT_LOGO ${CMAKE_CURRENT_SOURCE_DIR}/logo.png) set(OUTPUT_DOC_DIR ${CMAKE_CURRENT_BINARY_DIR}/) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${doxyfileName} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY) set(targetName "phoenix_doc_${projectName}") add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/doc.txt OUTPUT ${targetName} COMMENT "doxygen documentation generation for project ${projectName}" COMMAND doxygen ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile DEPENDS ${allDocFiles} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) add_custom_target(${targetName} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/doc.txt) if(NOT TARGET doc) add_custom_target(doc) endif() add_dependencies(doc ${targetName}) install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION share/${projectName}/doc) else() message(STATUS "program doxygen not found for project ${projectName}") endif() endfunction(phoenix_create_doc) |