@@ -19,8 +19,11 @@ include(GNUInstallDirs)
1919# with OPENVDB_BUILD_DOCS=ON and either OPENVDB_BUILD_HOUDINI_PLUGIN=ON or
2020# USE_HOUDINI=ON will define Houdini_VERSION. If Houdini_VERSION is not set,
2121# all documentation is included.
22- option (OPENVDB_DOXYGEN_HOUDINI "Build Houdini documentation" ON )
2322option (OPENVDB_DOXYGEN_AX "Build AX documentation" ON )
23+ option (OPENVDB_DOXYGEN_HOUDINI "Build Houdini documentation" ON )
24+ option (OPENVDB_DOXYGEN_INTERNAL [=[
25+ Enable documentation of methods and classes which have been explicitly marked as internal
26+ ]=] OFF )
2427
2528find_package (Doxygen REQUIRED doxygen)
2629if (MINIMUM_DOXYGEN_VERSION)
@@ -59,10 +62,12 @@ set(DOXYGEN_FILE_PATTERNS *.h *h.in) # headers only
5962set (DOXYGEN_EXTENSION_MAPPING .in=C) # parse CMake config headers as C
6063set (DOXYGEN_IMAGE_PATH "doc/img" )
6164set (DOXYGEN_RECURSIVE NO )
65+ set (DOXYGEN_QUIET YES )
6266
6367set (DOXYGEN_GENERATE_HTML YES )
6468set (DOXYGEN_GENERATE_MAN NO )
6569set (DOXYGEN_GENERATE_LATEX NO )
70+ set (DOXYGEN_GENERATE_TODOLIST NO )
6671
6772set (DOXYGEN_HTML_COLORSTYLE_HUE 4)
6873set (DOXYGEN_HTML_COLORSTYLE_SAT 222)
@@ -72,18 +77,36 @@ set(DOXYGEN_EXTRACT_ALL YES)
7277set (DOXYGEN_EXTRACT_STATIC YES )
7378set (DOXYGEN_EXTRACT_LOCAL_CLASSES NO )
7479
80+ # Allow for root directory paths to be listed (e.g. openvdb/io/File.h)
81+ # Rather than just the file names (e.g. File.h). This makes it far
82+ # easier to navigate the docs
83+ set (DOXYGEN_FULL_PATH_NAMES YES )
84+ set (DOXYGEN_STRIP_FROM_PATH
85+ "${CMAKE_SOURCE_DIR} /openvdb"
86+ "${CMAKE_SOURCE_DIR} /openvdb_ax"
87+ "${CMAKE_SOURCE_DIR} /openvdb_houdini"
88+ "${CMAKE_SOURCE_DIR} " )
89+ set (DOXYGEN_STRIP_FROM_INC_PATH
90+ "${CMAKE_SOURCE_DIR} /openvdb"
91+ "${CMAKE_SOURCE_DIR} /openvdb_ax"
92+ "${CMAKE_SOURCE_DIR} /openvdb_houdini" )
93+
94+ # Shows which source files generated the respected doxygen docs
95+ # at the bottom of each html page. Don't bother listing these.
96+ set (DOXYGEN_SHOW_USED_FILES NO )
97+ # When doxygen adds the source code for each header (see VERBATIM_HEADERS)
98+ # don't remove the actual doxygen comments
99+ set (DOXYGEN_STRIP_CODE_COMMENTS NO )
100+ # Don't add an alpha index of all classes (it's not particularly useful)
75101set (DOXYGEN_ALPHABETICAL_INDEX NO )
76102set (DOXYGEN_DISTRIBUTE_GROUP_DOC YES )
77- set (DOXYGEN_FULL_PATH_NAMES NO )
78- set (DOXYGEN_GENERATE_TODOLIST NO )
79103set (DOXYGEN_HIDE_IN_BODY_DOCS YES )
80104set (DOXYGEN_HIDE_SCOPE_NAMES YES )
81105set (DOXYGEN_INLINE_INHERITED_MEMB YES )
82106set (DOXYGEN_MACRO_EXPANSION YES )
83- set (DOXYGEN_CLASS_DIAGRAMS NO ) # @todo use dot with class diagrams for relevant classes
84- set (DOXYGEN_ENABLED_SECTIONS "" )
107+ # @todo use dot with class diagrams for relevant classes
108+ set (DOXYGEN_CLASS_DIAGRAMS NO )
85109
86- set (DOXYGEN_QUIET YES )
87110
88111set (DOXYGEN_ALIASES
89112 [[ijk="(<i>i</i>, <i>j</i>, <i>k</i>)"]]
@@ -115,8 +138,19 @@ set(DOXYGEN_PREDEFINED
115138 "OPENVDB_VERSION_NAME=v${OpenVDB_MAJOR_VERSION} _${OpenVDB_MINOR_VERSION} "
116139 "OPENVDB_ABI_VERSION_NUMBER=${OpenVDB_MAJOR_VERSION} "
117140 [[__declspec(x):= __attribute__(x):=]]
141+ # Replace the deprecated macros with doxygen deprecated comments. This ensures
142+ # that every bit of deprecated C++ is listed in the doxygen deprecated list,
143+ # even if it was not properly tagged
144+ [["OPENVDB_DEPRECATED=/** \deprecated */"]]
145+ [["OPENVDB_DEPRECATED_MESSAGE(x)=/** \deprecated x */"]]
118146 "OPENVDB_USE_LOG4CPLUS=" )
119147
148+ set (DOXYGEN_ENABLED_SECTIONS "" )
149+
150+ if (OPENVDB_DOXYGEN_INTERNAL)
151+ list (APPEND DOXYGEN_ENABLED_SECTIONS "OPENVDB_DOCS_INTERNAL" )
152+ endif ()
153+
120154if (OPENVDB_DOXYGEN_HOUDINI)
121155 # Append Houdini-specific settings to the Doxygen config file.
122156 if (Houdini_VERSION)
0 commit comments