# # sciqlop_doxygen.cmake # # Launch doxygen generation. Can be activated with the BUILD_DOCUMENTATION # option. # # The following CACHE variables are available: # * DOXYGEN_LANGUAGE: Documentation language; # # The following variables are used (must be set by the cmake file calling this # one): # * DOXYGEN_INPUT_DIRS: directories to document; # * DOXYGEN_EXCLUDE_PATTERNS: directories to exclude from the documentation # generation. # # # Compile the doxygen documentation # OPTION (BUILD_DOCUMENTATION "Build the doxygen-based documentation" ON) IF (BUILD_DOCUMENTATION) # Make sure Doxygen is on the system, if not then the documentation can't be built IF (DOXYGEN_FOUND) # Append the global docs directory to the list of input directories LIST (APPEND DOXYGEN_INPUT_DIRS "${CMAKE_SOURCE_DIR}/docs") LIST (APPEND DOXYGEN_INPUT_DIRS "${CMAKE_BINARY_DIR}/gendocs") # Exclude the "*_private.h" files by default list(APPEND DOXYGEN_EXCLUDE_PATTERNS "*_private.h") # Exclude cpp files list(APPEND DOXYGEN_EXCLUDE_PATTERNS "*.cpp") # Set the variables used by the Doxyfile template SET (PROJECT_NAME "${CMAKE_PROJECT_NAME}") SET (INPUT_DIRECTORIES) FOREACH (dir ${DOXYGEN_INPUT_DIRS}) SET (INPUT_DIRECTORIES "${INPUT_DIRECTORIES}\\ \n \"${dir}\" ") ENDFOREACH () SET (EXCLUDE_PATTERNS) FOREACH (pattern ${DOXYGEN_EXCLUDE_PATTERNS}) SET (EXCLUDE_PATTERNS "${EXCLUDE_PATTERNS}\\ \n \"${pattern}\" ") ENDFOREACH () SET (INDEX_LIST_MODULES "\n") # This is the doxyfile that will be used to generate the documentation # You can use programs like doxywizard to edit the settings SET (doxygenConfigFileIn "${CMAKE_SOURCE_DIR}/docs/Doxyfile.dox.in") SET (doxygenConfigFile "${CMAKE_BINARY_DIR}/Doxyfile.dox") SET (DOXYGEN_LANGUAGE "English" CACHE STRING "Documentation language") MARK_AS_ADVANCED (DOXYGEN_LANGUAGE) SET (doxygenIndexFileIn "${CMAKE_SOURCE_DIR}/docs/index.md.in") SET (doxygenIndexFile "${CMAKE_BINARY_DIR}/gendocs/index.md") # Using a .in file means we can use CMake to insert project settings # into the doxyfile. For example, CMake will replace @PROJECT_NAME@ in # a configured file with the CMake PROJECT_NAME variable's value. CONFIGURE_FILE (${doxygenConfigFileIn} ${doxygenConfigFile} @ONLY) CONFIGURE_FILE (${doxygenIndexFileIn} ${doxygenIndexFile} @ONLY) # Add the documentation target. This lets you run "make docs" from the # generated CMake makefiles ADD_CUSTOM_TARGET (docs ${DOXYGEN_EXECUTABLE} ${doxygenConfigFile} DEPENDS ${doxygenConfigFile} WORKING_DIRECTORY ${CMAKE_BINARY_DIR} VERBATIM) # You can add an "install" directive to install the resulting documentation # if desired. INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/documentation/html DESTINATION ${INSTALL_DOCUMENTATION_DIR} OPTIONAL COMPONENT binaries) # Add a custom command to archive the current HTML documentation generated # by doxygen set(ARCHIVED_HTML_OUTPUT_FILE_NAME "${PROJECT_NAME}-${SCIQLOP_VERSION}-documentation-html.tar.bz2") add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/documentation/${ARCHIVED_HTML_OUTPUT_FILE_NAME} COMMAND sh -c "tar --bzip2 -cf ${ARCHIVED_HTML_OUTPUT_FILE_NAME} html" DEPENDS docs WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/documentation) # Add a custom target to execute the above command add_custom_target(htmldocs DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/documentation/${ARCHIVED_HTML_OUTPUT_FILE_NAME}) # Add a custom command to execute pdflatex on the latex documentation # generated by doxygen set(LATEX_OUTPUT_FILE_NAME "${PROJECT_NAME}-${SCIQLOP_VERSION}-documentation.pdf") add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/documentation/${LATEX_OUTPUT_FILE_NAME} COMMAND make COMMAND cp refman.pdf ../${LATEX_OUTPUT_FILE_NAME} DEPENDS docs WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/documentation/latex) # Add a custom target to execute the above command add_custom_target(latexdocs DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/documentation/${LATEX_OUTPUT_FILE_NAME}) # Add a custom target to execute all the docs commands add_custom_target(alldocs DEPENDS htmldocs latexdocs) ELSE (DOXYGEN_FOUND) MESSAGE (STATUS "Documentation will not be built - Doxygen not found") ENDIF (DOXYGEN_FOUND) ENDIF (BUILD_DOCUMENTATION)