From f7acb3bfa953b8f0bf46271a921ee93d3e66155f Mon Sep 17 00:00:00 2001 From: yyc12345 Date: Sat, 24 Jan 2026 21:25:10 +0800 Subject: [PATCH] chore: update doc build --- Docs/CMakeLists.txt | 29 +++++++++++++++++++++++------ Docs/Doxyfile.in | 4 ++-- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/Docs/CMakeLists.txt b/Docs/CMakeLists.txt index 0251377..3afb3cc 100644 --- a/Docs/CMakeLists.txt +++ b/Docs/CMakeLists.txt @@ -1,19 +1,36 @@ -# Configure Doxygen config file +# Extract all public macros defined in LibCmo +# However, you should note that these extratcted macros have generator expressions. +get_target_property(LIBCMO_COMPILE_DEFINITIONS LibCmo COMPILE_DEFINITIONS) +if (LIBCMO_COMPILE_DEFINITIONS STREQUAL "LIBCMO_COMPILE_DEFINITIONS-NOTFOUND") + message(FATAL_ERROR "Cannot extract compile definitions from LibCmo.") +endif () +# Convert list to string for expanding in future. +list(JOIN LIBCMO_COMPILE_DEFINITIONS " " LIBCMO_MACRO_GENERATOR_EXPRESSIONS) + +# We simply configure Doxygen config file first. configure_file( ${CMAKE_CURRENT_LIST_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY ) -# Add custom target -add_custom_target (NeMoDocuments - doxygen ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile +# Then we use "file GENERATE" syntax to generate per-config truely Doxyfile used by Doxygen. +# Because there is no "$<>" syntax in Doxyfile, so we can safely use it. +# Please note that the generation of "file GENERATE" syntax will be postponed until the build stage. +file(GENERATE + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/$/Doxyfile" + INPUT "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile" + TARGET LibCmo +) + +# Add custom target using per-config Doxyfile +add_custom_target (LibCmoDocuments + Doxygen::doxygen "${CMAKE_CURRENT_BINARY_DIR}/$/Doxyfile" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT "Generating LibCmo documentation" VERBATIM + COMMENT "Generating documentation" VERBATIM ) # Install built documentation install (DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html - CONFIGURATIONS Release RelWithDebInfo MinSizeRel DESTINATION ${NEMO_INSTALL_DOC_PATH} ) diff --git a/Docs/Doxyfile.in b/Docs/Doxyfile.in index 143ea2e..c0faa06 100644 --- a/Docs/Doxyfile.in +++ b/Docs/Doxyfile.in @@ -2310,7 +2310,7 @@ PERLMOD_MAKEVAR_PREFIX = # C-preprocessor directives found in the sources and include files. # The default value is: YES. -ENABLE_PREPROCESSING = NO +ENABLE_PREPROCESSING = YES # If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names # in the source code. If set to NO, only conditional compilation will be @@ -2360,7 +2360,7 @@ INCLUDE_FILE_PATTERNS = # recursively expanded use the := operator instead of the = operator. # This tag requires that the tag ENABLE_PREPROCESSING is set to YES. -PREDEFINED = YYCC_DOXYGEN +PREDEFINED = @LIBCMO_MACRO_GENERATOR_EXPRESSIONS@ # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this # tag can be used to specify a list of macro names that should be expanded. The