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

如何在C++项目中分开文档化同名的C++与QML文件?

解决Doxygen中C++与QML同名类文档合并问题的方案

方法一:给QML类添加命名空间前缀

  • 在QML文件的类注释里通过@namespace标签指定专属命名空间,让Doxygen将QML类归到独立命名空间下,和C++类区分开:
    /**
     * @namespace QML
     * @class Login
     * @brief QML端登录界面组件
     */
    
  • 生成的文档里,QML的Login类会显示在QML命名空间下,和C++的Login类完全独立。

方法二:拆分配置文件生成独立文档

  • 针对C++和QML文件分别创建Doxygen配置:
    1. 新建Doxyfile_cpp,专门处理C++文件:
      INPUT = ./src/cpp
      FILE_PATTERNS = *.cpp *.h
      OUTPUT_DIRECTORY = ./docs/cpp_docs
      
    2. 新建Doxyfile_qml,专门处理QML文件:
      INPUT = ./src/qml
      FILE_PATTERNS = *.qml
      INPUT_FILTER = doxyqml
      OUTPUT_DIRECTORY = ./docs/qml_docs
      
  • 分别执行doxygen Doxyfile_cpp和doxygen Doxyfile_qml,得到两份完全独立的文档,彻底避免同名合并问题。

方法三:手动指定类的唯一ID

  • 在C++类的注释中用@id标签设置唯一标识:
    /**
     * @class Login
     * @id cpp_login
     * @brief C++端登录逻辑处理类
     */
    class Login { /* ... */ };
    
  • 在QML类的注释中用doxyqml支持的@id标签设置不同的唯一标识:
    /**
     * @class Login
     * @id qml_login
     * @brief QML端登录交互组件
     */
    
  • Doxygen会根据ID识别为不同类,不会合并同一名称的条目。

方法四:重命名QML类的显示名称

  • 在QML类的注释里用@name标签修改文档中的显示名称,明确区分C++与QML类:
    /**
     * @class Login
     * @name QML_Login
     * @brief QML登录界面组件
     */
    
  • 生成的文档中QML类会以QML_Login作为条目名称,和C++的Login类形成明确区分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 01:34:57