公司动态
Doxyfile模板文件
当前工作区的文件写入接口返回了权限错误因此配置文件没有成功保存。你可以将下面内容保存为项目根目录下的DoxyfilePROJECT_NAME C/C Project PROJECT_NUMBER 1.0.0 PROJECT_BRIEF API documentation OUTPUT_DIRECTORY docs CREATE_SUBDIRS NO INPUT . FILE_PATTERNS *.c *.cc *.cpp *.cxx *.h *.hh *.hpp *.hxx *.md RECURSIVE YES EXCLUDE ./docs ./build ./cmake-build-* EXTRACT_ALL YES EXTRACT_PRIVATE NO EXTRACT_STATIC YES HIDE_UNDOC_MEMBERS NO HIDE_UNDOC_CLASSES NO SOURCE_BROWSER YES INLINE_SOURCES NO REFERENCED_BY_RELATION YES REFERENCES_RELATION YES USE_MDFILE_AS_MAINPAGE README.md MARKDOWN_SUPPORT YES HAVE_DOT NO CLASS_DIAGRAMS YES GENERATE_HTML YES HTML_OUTPUT html HTML_TIMESTAMP YES GENERATE_TREEVIEW YES DISABLE_INDEX NO SEARCHENGINE YES GENERATE_LATEX NO GENERATE_XML NO DOXYFILE_ENCODING UTF-8 INPUT_ENCODING UTF-8 OUTPUT_LANGUAGE Chinese ALLOW_UNICODE_NAMES YES QUIET NO WARNINGS YES WARN_IF_UNDOCUMENTED NO WARN_IF_DOC_ERROR YES WARN_NO_PARAMDOC NO WARN_AS_ERROR NO WARN_LOGFILE docs/doxygen-warnings.log ENABLE_PREPROCESSING YES MACRO_EXPANSION NO EXPAND_ONLY_PREDEF NO SKIP_FUNCTION_MACROS YES HTML_COLORSTYLE AUTO_LIGHT HTML_COLORSTYLE_HUE 220 HTML_COLORSTYLE_SAT 100 HTML_COLORSTYLE_GAMMA 80 USE_MATHJAX NO SORT_MEMBER_DOCS YES SORT_BRIEF_DOCS NO SORT_BY_SCOPE_NAME YES在包含Doxyfile的目录中执行doxygen Doxyfile生成的 HTML 首页位于docs/html/index.html如果希望扫描指定源代码目录可以把INPUT .改成INPUT src include如果没有README.md则删除这一行USE_MDFILE_AS_MAINPAGE README.md如果是一个cuda项目里面既有c cpp 还有cu文件那么适用。Doxygen 可以处理同时包含.c、.cpp、.cu和.cuh的 CUDA 项目但需要把 CUDA 文件映射为 C并让预处理器忽略部分 CUDA 关键字。在之前的Doxyfile中修改以下配置即可FILE_PATTERNS *.c \ *.cc \ *.cpp \ *.cxx \ *.h \ *.hh \ *.hpp \ *.hxx \ *.cu \ *.cuh \ *.md EXTENSION_MAPPING cuC \ cuhC建议将完整的预处理配置写成ENABLE_PREPROCESSING YES MACRO_EXPANSION YES EXPAND_ONLY_PREDEF YES SKIP_FUNCTION_MACROS YES PREDEFINED __CUDACC__ \ __host__ \ __device__ \ __global__ \ __shared__ \ __constant__ \ __managed__ \ __restrict__ \ __forceinline__inline \ __noinline__ \ __align__(x) \ __launch_bounds__(x)作用是让 Doxygen 分析下面的 CUDA 代码时不被 CUDA 专用修饰符干扰__global__voidvector_add(constfloat*a,constfloat*b,float*c,intn);Doxygen 会近似把它当成voidvector_add(constfloat*a,constfloat*b,float*c,intn);这里只影响文档解析不会修改或影响 CUDA 编译。适合 CUDA 项目的关键配置可以整合为PROJECT_NAME CUDA Project INPUT src include RECURSIVE YES FILE_PATTERNS *.c *.cc *.cpp *.cxx \ *.h *.hh *.hpp *.hxx \ *.cu *.cuh *.md EXTENSION_MAPPING cuC cuhC EXCLUDE build \ docs \ cmake-build-* \ third_party EXTRACT_ALL YES EXTRACT_STATIC YES SOURCE_BROWSER YES REFERENCED_BY_RELATION YES REFERENCES_RELATION YES ENABLE_PREPROCESSING YES MACRO_EXPANSION YES EXPAND_ONLY_PREDEF YES SKIP_FUNCTION_MACROS YES PREDEFINED __CUDACC__ \ __host__ \ __device__ \ __global__ \ __shared__ \ __constant__ \ __managed__ \ __restrict__ \ __forceinline__inline \ __noinline__ \ __align__(x) \ __launch_bounds__(x) GENERATE_HTML YES HTML_OUTPUT html GENERATE_TREEVIEW YES GENERATE_LATEX NO OUTPUT_DIRECTORY docs OUTPUT_LANGUAGE Chinese INPUT_ENCODING UTF-8CUDA 函数的注释写法和普通 C 一样/** * brief 在 GPU 上执行向量加法。 * * 每个 CUDA 线程负责计算一个数组元素。 * * param[in] a 输入向量 A 的设备指针。 * param[in] b 输入向量 B 的设备指针。 * param[out] c 输出向量 C 的设备指针。 * param[in] n 向量元素数量。 * * pre a、b 和 c 必须指向有效的设备内存。 * note 该函数是 CUDA 核函数必须使用 grid, block 启动。 */__global__voidvector_add(constfloat*a,constfloat*b,float*c,intn);CPU 包装函数也可以单独说明/** * brief 启动向量加法 CUDA 核函数。 * * param[in] a 输入向量 A 的设备指针。 * param[in] b 输入向量 B 的设备指针。 * param[out] c 输出向量 C 的设备指针。 * param[in] n 向量元素数量。 * param[in] stream CUDA 执行流。 * * return CUDA API 返回的错误状态。 */cudaError_tlaunch_vector_add(constfloat*a,constfloat*b,float*c,intn,cudaStream_t stream);# Doxygen configuration for a mixed C/C/CUDA project. PROJECT_NAME CUDA Project PROJECT_NUMBER 1.0.0 PROJECT_BRIEF C/C/CUDA API documentation OUTPUT_DIRECTORY docs CREATE_SUBDIRS NO # Change INPUT to src include when those are the only source directories. INPUT . RECURSIVE YES FILE_PATTERNS *.c \ *.cc \ *.cpp \ *.cxx \ *.h \ *.hh \ *.hpp \ *.hxx \ *.cu \ *.cuh \ *.md EXTENSION_MAPPING cuC \ cuhC EXCLUDE ./docs \ ./build \ ./cmake-build-* \ ./third_party EXCLUDE_PATTERNS */.git/* \ */CMakeFiles/* EXTRACT_ALL YES EXTRACT_PRIVATE NO EXTRACT_STATIC YES EXTRACT_LOCAL_CLASSES YES HIDE_UNDOC_MEMBERS NO HIDE_UNDOC_CLASSES NO SOURCE_BROWSER YES INLINE_SOURCES NO STRIP_CODE_COMMENTS YES REFERENCED_BY_RELATION YES REFERENCES_RELATION YES CALL_GRAPH NO CALLER_GRAPH NO MARKDOWN_SUPPORT YES USE_MDFILE_AS_MAINPAGE README.md AUTOLINK_SUPPORT YES # Parse CUDA files as C and remove CUDA-only qualifiers. ENABLE_PREPROCESSING YES MACRO_EXPANSION YES EXPAND_ONLY_PREDEF YES SKIP_FUNCTION_MACROS YES PREDEFINED __CUDACC__ \ __host__ \ __device__ \ __global__ \ __shared__ \ __constant__ \ __managed__ \ __restrict__ \ __forceinline__inline \ __noinline__ \ __align__(x) \ __launch_bounds__(x) GENERATE_HTML YES HTML_OUTPUT html HTML_TIMESTAMP YES GENERATE_TREEVIEW YES DISABLE_INDEX NO SEARCHENGINE YES GENERATE_LATEX NO GENERATE_XML NO GENERATE_MAN NO DOXYFILE_ENCODING UTF-8 INPUT_ENCODING UTF-8 OUTPUT_LANGUAGE Chinese ALLOW_UNICODE_NAMES YES QUIET NO WARNINGS YES WARN_IF_UNDOCUMENTED NO WARN_IF_DOC_ERROR YES WARN_NO_PARAMDOC NO WARN_AS_ERROR NO WARN_LOGFILE docs/doxygen-warnings.log HAVE_DOT NO CLASS_DIAGRAMS YES USE_MATHJAX NO SORT_MEMBER_DOCS YES SORT_BRIEF_DOCS NO SORT_BY_SCOPE_NAME YES需要注意Doxygen 的职责是生成 API 文档并不会验证 kernel 的线程配置、设备指针或 CUDA 代码是否能正确编译。CUDA 编译正确性仍应由nvcc、CMake 和测试程序保证。