我正在使用 doxygen 1.8.20
相关配置:
INPUT = @CMAKE_CURRENT_SOURCE_DIR@
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH = @CMAKE_CURRENT_SOURCE_DIR@/../include\
@CMAKE_CURRENT_SOURCE_DIR@/include\
@CMAKE_CURRENT_SOURCE_DIR@/src
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = NO
定义宏:
#define BEGIN_NS(NS) namespace NS {
#define END_NS(NS) /* NS */ }
宏用法:
BEGIN_NS(xyz::core)
class X { ... };
END_NS(xyz::core)
** 编辑 **
doxygen -x的结果
# Difference with default Doxyfile 1.8.20
PROJECT_NAME = "XXXX Library"
OUTPUT_DIRECTORY = project/../build/docs
TOC_INCLUDE_HEADINGS = 0
EXTRACT_ALL = YES
EXTRACT_PRIVATE = YES
EXTRACT_PACKAGE = YES
EXTRACT_STATIC = YES
WARN_IF_UNDOCUMENTED = NO
INPUT = project
FILE_PATTERNS = *.c \
*.cc \
*.cxx \
*.cpp \
*.c++ \
*.java \
*.ii \
*.ixx \
*.ipp \
*.i++ \
*.inl \
*.idl \
*.ddl \
*.odl \
*.h \
*.hh \
*.hxx \
*.hpp \
*.h++ \
*.cs \
*.d \
*.php \
*.php4 \
*.php5 \
*.phtml \
*.inc \
*.m \
*.markdown \
*.md \
*.mm \
*.dox \
*.py \
*.pyw \
*.f90 \
*.f95 \
*.f03 \
*.f08 \
*.f \
*.for \
*.tcl \
*.vhd \
*.vhdl \
*.ucf \
*.qsf
RECURSIVE = YES
VERBATIM_HEADERS = NO
MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
GENERATE_LATEX = NO
LATEX_CMD_NAME = latex
GENERATE_XML = YES
MACRO_EXPANSION = YES
INCLUDE_PATH = project
SKIP_FUNCTION_MACROS = NO
HAVE_DOT = YES
我使用了与您相同的以下设置:
设置:
# Difference with default Doxyfile 1.8.20
PROJECT_NAME = "XXXX Library"
TOC_INCLUDE_HEADINGS = 0
EXTRACT_ALL = YES
EXTRACT_PRIVATE = YES
EXTRACT_PACKAGE = YES
EXTRACT_STATIC = YES
WARN_IF_UNDOCUMENTED = NO
VERBATIM_HEADERS = NO
MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
GENERATE_LATEX = NO
GENERATE_XML = YES
MACRO_EXPANSION = YES
INCLUDE_PATH = .
SKIP_FUNCTION_MACROS = NO
HAVE_DOT = YES
QUIET=YES
/// \file
文件aa.h
#define BEGIN_NS(NS) namespace NS {
#define END_NS(NS) /* NS */ }
BEGIN_NS(xyz::core)
class X { ... };
END_NS(xyz::core)
/// \file
文件bb.h
#define BEGIN_NS1(NS1) namespace NS1 {
#define END_NS1(NS1) /* NS1 */ }
文件 bb1.h
/// \file
#include "bb.h"
BEGIN_NS1(xyz1::core1)
class X1 { ... };
END_NS1(xyz1::core1)
结果是:
我们看到这里缺少类,在当前 master (1.9.0 (4e75d77f60bd173019247177686376ce36ace90b)) 中存在类:
这是你的意思还是我错过了什么?
我遇到了同样的问题,并通过在 INCLUDE_PATH 中添加输入目录解决了这个问题。出于某种原因,INPUT 目录似乎没有在 doxygen 1.9.6 上用作 INCLUDE_PATH。也许这里也有你的问题(@CMAKE_CURRENT_SOURCE_DIR@?)