【问题标题】:How to get Doxygen to show properly the class hierarchy when derived types are in a separate module当派生类型位于单独的模块中时,如何让 Doxygen 正确显示类层次结构
【发布时间】:2019-11-27 21:42:22
【问题描述】:

这是我的问题:当我为面向对象的 Fortran 代码生成 Doxygen 文档时,派生类没有正确链接到基类。派生类在单独的模块中定义,以便将它们组织成“短”文件。

如果我在模块mod_myclass 中有类myclass,在模块mod_myderclass 中有一个派生类myderclass,Doxygen 绘制的层次结构如下所示:

而不是简单地:
mod_myclass::Myclass <----- mod_myderclass::Myderclass.

我尝试切换Doxyfile的不同选项,如OPTIMIZE_FOR_FORTRANHIDE_SCOPE_NAMES,没有成功。

为了说明这一点,这是文件mod_myclass.f90

!--------------------------------------------------------------------------------------------------
!     FILE mod_myclass.f90
!>    @brief   Definition of base class myclass
!!    @file    mod_myclass.f90
!--------------------------------------------------------------------------------------------------

!--------------------------------------------------------------------------------------------------
!     MODULE mod_myclass
!>    @brief Define base class myclass
!--------------------------------------------------------------------------------------------------
MODULE mod_myclass
IMPLICIT NONE

!--------------------------------------------------------------------------------------------------
!     CLASS Myclass
!>    @brief   base class myclass
!--------------------------------------------------------------------------------------------------
  TYPE :: Myclass

  END TYPE
END MODULE

并且是包含派生类mod_myderclass.f90的文件:

!--------------------------------------------------------------------------------------------------
!     FILE mod_myderclass.f90
!>    @brief   Definition of derived class myderclass
!!    @file    mod_myderclass.f90
!--------------------------------------------------------------------------------------------------

!--------------------------------------------------------------------------------------------------
!     MODULE mod_myderclass
!>    @brief Define derived class myclass
!--------------------------------------------------------------------------------------------------
MODULE mod_myderclass
  USE mod_myclass
IMPLICIT NONE

!--------------------------------------------------------------------------------------------------
!     CLASS myderclass
!>    @brief derived class myderclass
!--------------------------------------------------------------------------------------------------
  TYPE, EXTENDS(Myclass) :: Myderclass
  END TYPE
END MODULE

【问题讨论】:

  • 你使用了哪个版本的 doxygen?可能有助于通过原始问题中的图像显示您所获得的信息,并在此处根据该图像说明您的期望,而坚果只是有一些文字解释。
  • 我正在使用 Doxygen v1.8.11。我添加了输出的图像。它实际上看起来像一个大写问题:当我删除 Fortran 文件中类名首字母的大写时,我最终得到了正确的输出。然而,如果我想保留大写的类名,我发现无论 Doxyfile 中字段 CASE_SENSE_NAMES 的值是什么,我都会得到错误的输出。

标签: fortran doxygen


【解决方案1】:

Doxygen 1.8.11 版本有点旧(2015 年 12 月),当前版本是 1.8.15。 在示例中运行 1.8.15 时,我得到:

这是您的预期吗?在这种情况下,请更新您的 doxygen 版本。

【讨论】:

  • 这确实是我所期望的。然而,我从昨天开始编辑了 MWE,因为我用来写它的复制/粘贴去掉了大写。您确定您运行的示例具有大写的类名吗?我刚刚尝试使用 doxygen v1.8.15 并得到与以前相同的错误结果...谢谢您的帮助,我很感激。
  • Fortran 不区分大小写,因此所有名称都转换为小写。如果您遇到大写字符且图片不正确的情况,请告知我们。
  • 我刚刚在这里再次获取了站点的代码并重新运行并看起来不错(在 Doxyfile 中我只设置了HAVE_DOT=YES,其余为默认值;使用@987654324 很容易检查 doxygen 1.8.15 @)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-27
  • 2015-05-14
  • 2013-11-21
  • 2022-01-14
  • 1970-01-01
相关资源
最近更新 更多