|
|
#
|
|
|
# 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 "<ul>\n")
|
|
|
FOREACH(module ${ENABLED_MODULE_LIST})
|
|
|
SET (INDEX_LIST_MODULES "${INDEX_LIST_MODULES}<li>[${module}](@ref ${module})</li>\n")
|
|
|
ENDFOREACH()
|
|
|
SET (INDEX_LIST_MODULES "${INDEX_LIST_MODULES}</ul>\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)
|
|
|
|