Doxygen:如何链接到Doxygen生成的HTML文件的用户定义的锚?

时间:2020-04-20 23:19:43

标签: doxygen

我正在使用Doxygen 1.8.17和CMake 3.14+来记录旧的旧版Fortran 77应用程序。

我无法使用Doxygen解决以下用例:

位于名为myenum.f90的文件中的一个子例程定义了Doxygen文档的某些值,并设置了@anchor命令。

!> @brief get myenum
subroutine get(myenum)
!> @param[out] myenum
   integer myenum

   !> @anchor enum_myenum myenum's meaning
   !! value  | meaning
   !! :-----:|:-------:
   !! 1      |left
   !! 2      |center
   !! 3      |right 

   !> Compute myenum (code skipped)
   myenum = 1   
end subroutine

位于名为dosomething.f90的文件中的另一个子例程使用这些值并引用锚点以避免文档重复。

!> do something based on myenum
subroutine dosomething(myenum, mystuff)
    integer myenum !< @param[in] myenum [based on myenum enumerate](@ref enum_myenum)
    character*(*) mystuff !< @param[out] my stuff

    if (myenum.eq.1) then
        mystuff='left'
    elseif (myenum.eq.2) then
        mystuff='center'
    elseif (myenum.eq.3) then
        mystuff='right'
    endif
end subroutine

在Doxygen生成的文件dosomething<...>.html中创建了超链接。链接的目标不是Doxygen生成的文件myenum<...>.html,而是Fortran文件myenum.f90

是否可以将锚点位置的链接目标设置为myenum<...>.html

1 个答案:

答案 0 :(得分:1)

Doxygen通过@ref命令,使用markdown语法,一些自动链接等多种方式来创建链接。也可以使用\link ...\endlink构造。

从您的示例(以及我的测试)看来,@ref和markdown语法在这种情况下不起作用。 我也尝试过使用\link..命令,并且这个(据我所知)有效,我的示例有点扩展,例如:

!> do something based on myenum                                                                                                     subroutine dosomething(myenum, mystuff, mythird)
    integer myenum           !< @param[in]  [based on markdown syntax with @@ref](@ref enum_myenum)
    character*(*) mystuff    !< @param[out] @ref enum_myenum Based on @@ref command
    double precision mythird !< @param[out] @link enum_myenum based on @@link command \endlink

    if (myenum.eq.1) then
        mystuff='left'
    elseif (myenum.eq.2) then
        mystuff='center'
    elseif (myenum.eq.3) then
        mystuff='right'
    endif
end subroutine

使用当前的doxygen版本1.8.18和当前的主版本(1.8.19(cd581388f3d013c501e3cefbaf3e81cf93d46fcb)),问题仍然存在。

绝对值得在doxygen问题跟踪器中提交问题/错误报告:https://github.com/doxygen/doxygen/issues/new