You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除Doxygen生成的C++文档中的Python代码片段?

解决Doxygen处理SWIG .i文件时显示Python代码片段的问题

方法一:用Doxygen条件标记隐藏Python代码块

在C++头文件或SWIG .i文件中,给Python专属代码块加上Doxygen的@cond和@endcond标记,指定仅SWIG处理时生效,Doxygen会自动忽略该块内容:

@forcpponly
// C++专属实现与注释
@endforcpponly

@beginPythonOnly
@cond SWIG_INTERNAL
// Python专属代码与注释
@endcond
@endPythonOnly

无需额外修改Doxygen配置,未启用的@cond标记块会被默认隐藏。

方法二:通过Doxygen预定义宏过滤

在Doxygen配置文件(Doxyfile)中添加预定义宏,让Doxygen判定Python专属代码块未启用:

PREDEFINED = SWIGPYTHON=0

然后用条件编译包裹Python代码:

#ifdef SWIGPYTHON
@beginPythonOnly
// Python专属代码
@endPythonOnly
#endif

Doxygen处理时会跳过SWIGPYTHON定义的代码块,而SWIG生成Python包装时能正常识别。

方法三:用输入过滤器移除Python代码块

利用文本过滤脚本,让Doxygen处理.i文件前自动删除Python专属代码块。比如用sed命令作为输入过滤器,在Doxyfile中设置:

INPUT_FILTER = sed '/@beginPythonOnly/,/@endPythonOnly/d'

该命令会清除所有@beginPythonOnly与@endPythonOnly之间的内容,确保Doxygen仅处理C++相关部分。

方法四:分离文档处理范围

若无需Doxygen处理SWIG .i文件的文档,可修改Doxyfile的FILE_PATTERNS,只包含C++头文件:

FILE_PATTERNS = *.h *.hpp

同时确保C头文件中的@forcpponly标记正确隔离C文档,SWIG会单独提取Python部分的注释。

内容的提问来源于stack exchange,提问作者Edward

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 15:57:16