96 lines
3.0 KiB
CMake
96 lines
3.0 KiB
CMake
# Doxygen documentation configuration
|
|
option(GTSAM_BUILD_DOCS "Enable/Disable building of doxygen docs" ON)
|
|
|
|
# configure doxygen
|
|
option(GTSAM_BUILD_DOC_HTML "Enable/Disable doxygen HTML output" ON)
|
|
option(GTSAM_BUILD_DOC_LATEX "Enable/Disable doxygen LaTeX output" OFF)
|
|
option(GTSAM_GENERATE_DOC_XML "Enable/Disable doxygen XML output" OFF)
|
|
|
|
# add a target to generate API documentation with Doxygen
|
|
if (GTSAM_BUILD_DOCS)
|
|
# The following if statements convert ON/OFF CMake flags to YES/NO variables
|
|
# since Doxygen expects YES/NO for boolean options.
|
|
if (GTSAM_BUILD_DOC_HTML)
|
|
set(GTSAM_BUILD_DOC_HTML_YN "YES")
|
|
else()
|
|
set(GTSAM_BUILD_DOC_HTML_YN "NO")
|
|
endif()
|
|
|
|
if (GTSAM_BUILD_DOC_LATEX)
|
|
set(GTSAM_BUILD_DOC_LATEX_YN "YES")
|
|
else()
|
|
set(GTSAM_BUILD_DOC_LATEX_YN "NO")
|
|
endif()
|
|
|
|
if (GTSAM_GENERATE_DOC_XML)
|
|
set(GTSAM_GENERATE_XML_YN "YES")
|
|
else()
|
|
set(GTSAM_GENERATE_XML_YN "NO")
|
|
endif()
|
|
|
|
# GTSAM core subfolders
|
|
set(gtsam_doc_subdirs
|
|
gtsam/base
|
|
gtsam/basis
|
|
gtsam/discrete
|
|
gtsam/geometry
|
|
gtsam/hybrid
|
|
gtsam/inference
|
|
gtsam/linear
|
|
gtsam/navigation
|
|
gtsam/nonlinear
|
|
gtsam/sam
|
|
gtsam/sfm
|
|
gtsam/slam
|
|
gtsam/symbolic
|
|
gtsam
|
|
)
|
|
|
|
# Optional GTSAM_UNSTABLE subfolders
|
|
set(gtsam_unstable_doc_subdirs
|
|
gtsam_unstable/base
|
|
gtsam_unstable/discrete
|
|
gtsam_unstable/dynamics
|
|
gtsam_unstable/geometry
|
|
gtsam_unstable/linear
|
|
gtsam_unstable/nonlinear
|
|
gtsam_unstable/partition
|
|
gtsam_unstable/slam
|
|
gtsam_unstable
|
|
)
|
|
|
|
# Build a list of folders to include depending on build options
|
|
set(doc_subdirs ${gtsam_doc_subdirs})
|
|
if (GTSAM_BUILD_UNSTABLE)
|
|
list(APPEND doc_subdirs ${gtsam_unstable_doc_subdirs})
|
|
endif()
|
|
if (GTSAM_BUILD_EXAMPLES_ALWAYS)
|
|
list(APPEND doc_subdirs examples)
|
|
endif()
|
|
|
|
# From subfolders, build a list with whitespace separation of paths
|
|
set(GTSAM_DOXYGEN_INPUT_PATHS "")
|
|
foreach(dir ${doc_subdirs})
|
|
set(GTSAM_DOXYGEN_INPUT_PATHS "${GTSAM_DOXYGEN_INPUT_PATHS} ${PROJECT_SOURCE_DIR}/${dir}")
|
|
endforeach()
|
|
|
|
# Generate Doxyfile
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
|
|
|
|
# Add target to actually build documentation as configured
|
|
add_custom_target(doc
|
|
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
COMMENT "Generating API documentation with Doxygen" VERBATIM
|
|
)
|
|
|
|
# Clean target
|
|
add_custom_target(doc_clean
|
|
COMMAND
|
|
cmake -E remove_directory ${CMAKE_CURRENT_SOURCE_DIR}/latex
|
|
COMMAND
|
|
cmake -E remove_directory ${CMAKE_CURRENT_SOURCE_DIR}/html
|
|
COMMENT "Removing Doxygen documentation"
|
|
)
|
|
endif()
|