cesium-native/doc/CMakeLists.txt

127 lines
5.3 KiB
CMake

find_package(Doxygen)
if(DOXYGEN_FOUND)
set(
LIB_DIRS
../Cesium3DTiles/include
../Cesium3DTiles/generated/include
../Cesium3DTilesContent/include
../Cesium3DTilesReader/include
../Cesium3DTilesReader/generated/include
../Cesium3DTilesWriter/include
../Cesium3DTilesSelection/include
../CesiumAsync/include
../CesiumCurl/include
../CesiumGeometry/include
../CesiumGeospatial/include
../CesiumGltf/include
../CesiumGltf/generated/include
../CesiumGltfContent/include
../CesiumGltfReader/include
../CesiumGltfReader/generated/include
../CesiumGltfWriter/include
../CesiumClientCommon/include
../CesiumIonClient/include
../CesiumITwinClient/include
../CesiumVectorData/include
../CesiumJsonReader/include
../CesiumJsonWriter/include
../CesiumQuantizedMeshTerrain/include
../CesiumQuantizedMeshTerrain/generated/include
../CesiumRasterOverlays/include
../CesiumUtility/include
)
set(DOXYGEN_STRIP_FROM_INC_PATH ${LIB_DIRS})
# Instead of specifying the full source tree in the example path, specify only the Cesium* lib directories to reduce parsing time
file(GLOB example_dirs LIST_DIRECTORIES true RELATIVE ${CMAKE_CURRENT_LIST_DIR} "../Cesium*")
foreach(child ${example_dirs})
if(IS_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/${child})
list(APPEND DOXYGEN_EXAMPLE_PATH ${CMAKE_CURRENT_LIST_DIR}/${child})
endif()
endforeach()
# These macro definitions confuse doxygen, causing it
# to omit the respective elements in the documentation,
# so ignore these macros during doxygen preprocessing:
set(DOXYGEN_ENABLE_PREPROCESSING YES)
set(DOXYGEN_MACRO_EXPANSION YES)
set(DOXYGEN_EXPAND_ONLY_PREDEF NO)
set(DOXYGEN_PREDEFINED
"CESIUM3DTILES_API"
"CESIUM3DTILESCONTENT_API"
"CESIUM3DTILESREADER_API"
"CESIUM3DTILESSELECTION_API"
"CESIUM3DTILESWRITER_API"
"CESIUMASYNC_API"
"CESIUMCURL_API"
"CESIUMCLIENTCOMMON_API"
"CESIUMGEOMETRY_API"
"CESIUMGEOSPATIAL_API"
"CESIUMGLTF_API"
"CESIUMGLTFCONTENT_API"
"CESIUMGLTFREADER_API"
"CESIUMGLTFWRITER_API"
"CESIUMIWINCLIENT_API"
"CESIUMIONCLIENT_API"
"CESIUMJSONREADER_API"
"CESIUMJSONWRITER_API"
"CESIUMQUANTIZEDMESHTERRAIN_API"
"CESIUMRASTEROVERLAYS_API"
"CESIUMUTILITY_API"
"CESIUM_DEFAULT_ELLIPSOID==CesiumGeospatial::Ellipsoid::WGS84")
set(DOXYGEN_HTML_EXTRA_STYLESHEET "${CMAKE_CURRENT_LIST_DIR}/../node_modules/doxygen-awesome-css/doxygen-awesome.css")
set(DOXYGEN_HTML_FOOTER "${CMAKE_CURRENT_LIST_DIR}/footer.html")
set(DOXYGEN_GENERATE_TREEVIEW YES)
set(DOXYGEN_DISABLE_INDEX NO)
set(DOXYGEN_FULL_SIDEBAR NO)
set(DOXYGEN_HTML_COLORSTYLE LIGHT)
set(DOXYGEN_SOURCE_BROWSER YES)
set(DOXYGEN_BUILTIN_STL_SUPPORT YES)
set(DOXYGEN_USE_MDFILE_AS_MAINPAGE "../README.md")
set(DOXYGEN_USE_MATHJAX YES)
set(DOXYGEN_DOT_GRAPH_MAX_NODES 100)
set(DOXYGEN_WARN_AS_ERROR FAIL_ON_WARNINGS_PRINT)
list(APPEND DOXYGEN_IMAGE_PATH "${CMAKE_CURRENT_LIST_DIR}/")
list(APPEND DOXYGEN_IMAGE_PATH "${CMAKE_CURRENT_LIST_DIR}/img")
set(DOXYGEN_MARKDOWN_ID_STYLE GITHUB)
set(DOXYGEN_INTERACTIVE_SVG YES)
# Tag files can be used by other Doxygen projects to link to our docs
# For example, Cesium for Unreal can use it to link to the Cesium Native docs without duplicating them.
set(DOXYGEN_GENERATE_TAGFILE "${CMAKE_CURRENT_BINARY_DIR}/html/cesium-native.tag")
if(NOT CESIUM_PRODUCTION_DOCS)
set(DOXYGEN_PROJECT_BRIEF "PRE-RELEASE")
set(DOXYGEN_HTML_HEADER "${CMAKE_CURRENT_LIST_DIR}/header-noindex.html")
else()
set(DOXYGEN_HTML_HEADER "${CMAKE_CURRENT_LIST_DIR}/header.html")
endif()
# Add support for Mermaid charts using the @mermaid command.
set(DOXYGEN_HTML_EXTRA_FILES "${CMAKE_CURRENT_LIST_DIR}/assets/mermaid.min.js ${CMAKE_CURRENT_LIST_DIR}/assets/mingcute.json.js ${CMAKE_CURRENT_LIST_DIR}/assets/panzoom.js")
list(APPEND DOXYGEN_ALIASES mermaid{1}="\\htmlonly <div class=\\\"mermaid\\\"> \\ilinebr \\endhtmlonly \\htmlinclude \\\"\\1.mmd\\\" \\htmlonly \\ilinebr </div> \\endhtmlonly")
list(APPEND DOXYGEN_ALIASES mermaid-interactive{1}="\\htmlonly <div class=\\\"mermaid interactive\\\"> \\ilinebr \\endhtmlonly \\htmlinclude \\\"\\1.mmd\\\" \\htmlonly \\ilinebr </div> \\endhtmlonly")
list(APPEND DOXYGEN_ALIASES svg-interactive{2}="\\htmlonly <div class=\\\"svg interactive\\\" style=\\\"min-height: \\2\\\"> \\ilinebr \\endhtmlonly \\image html \\\"\\1.svg\\\" \\htmlonly \\ilinebr </div> \\endhtmlonly")
set(DOXYGEN_VERBATIM_VARS DOXYGEN_ALIASES DOXYGEN_HTML_EXTRA_FILES)
list(APPEND DOXYGEN_EXAMPLE_PATH "${CMAKE_CURRENT_LIST_DIR}/diagrams")
list(APPEND DOXYGEN_TAGFILES "${CMAKE_CURRENT_LIST_DIR}/community.tag=https://github.com/CesiumGS/community/blob/main")
cesium_glob_files(
CESIUM_DOC_TOPICS
${CMAKE_CURRENT_LIST_DIR}/topics/*.md
)
doxygen_add_docs(
cesium-native-docs
"../CONTRIBUTING.md"
"../README.md"
"../CHANGES.md"
${CESIUM_DOC_TOPICS}
${LIB_DIRS}
)
endif()