当前位置: 首页 > news >正文

Doxyfile模板文件

当前工作区的文件写入接口返回了权限错误,因此配置文件没有成功保存。你可以将下面内容保存为项目根目录下的Doxyfile

PROJECT_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 = cu=C++ \ cuh=C++

建议将完整的预处理配置写成:

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 = cu=C++ cuh=C++ 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-8

CUDA 函数的注释写法和普通 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 = cu=C++ \ cuh=C++ 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 和测试程序保证。

http://www.jsqmd.com/news/1242018/

相关文章:

  • 全网更新!2026深圳芝柏官方维修点新址发布咨询热线同步换新 - 亨得利客户服务中心
  • Canvas粒子系统实现情绪化动画:从烟花易冷看代码艺术创作
  • 十佳/优秀主题投票活动发起指南:手机端快速操作步骤
  • 全球顶级模型对比分析(2026大模型全景解析)
  • IDEA文件删除策略和文件重命名操作(包含各选项讲解以及策略选择)
  • 新能源汽车热管理系统技术解析与前沿进展
  • LangChain4j与NL2SQL:构建智能问数系统的实践指南
  • 2026济源择校必看!济源排名第一文武学校招生简章+办学优势 - Luckyone王
  • 业务智能体实战笔记:兜底修复——LLM 错了怎么救
  • C++ STL map与multimap:红黑树实现、核心操作与实战场景详解
  • 香港和内地重疾险25种常见重疾定义对比全解析
  • 阿里禁用Claude Code事件解析与AI编程工具风险应对
  • 安谋科技Arm China闪耀WAIC | AI前瞻分享,Arm无处不在,让AI触手可及
  • 等保合规威胁建模:把监管要求翻译成架构层面的控制点
  • IM即时通讯系统全新升级|打造专属企业沟通平台
  • 秘鲁全域交通基建与完整物流网络深度梳理
  • HarmonyOS 6.1 隐私合规实战:从“明示同意”到“最小化收集”的全链路设计
  • 向量+关键词+图谱三模态搜索框架怎么搭?2024唯一通过金融级SLA验证的4种组合方案(含性能衰减曲线图)
  • (Python基础教程之九)Python中的Tuple操作
  • 搭建pyqt5-ubuntu编译环境
  • iOS课程观看笔记(二)---OC语言相关
  • Day 01 · 数据可视化到底在干啥?为什么 AI 让它变简单了
  • 多选手微信投票活动怎么创建?新手搭建完整指南
  • Yolo系列算法学习笔记——YOLOv4 知识点梳理与总结
  • 事务与锁的进阶实战:读懂死锁日志之外的锁等待链
  • 2026中山防水补漏靠谱机构测评,房屋漏水维修问答详解,免砸砖测漏+固定报价省心不踩坑 - 宅安选房屋修缮
  • 天津正规西点学校怎么选
  • Grok 4.5浏览器自动化:从原理到实践的全方位解析
  • Day 0 实测|在 GPUStack 上部署 Inkling-BF16:8 卡 H20-141G 推理性能测试
  • (Python基础教程之八)Python中的list操作