我正在使用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
?
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
同样,对于当前的脱氧核糖核酸1.8.18版本和当前的主版本(1.8.19(cd581388f3d013c501e3cefbaf3e81cf93d46fcb((,问题仍然存在。
在doxygen问题跟踪器中提交问题/错误报告绝对值得:https://github.com/doxygen/doxygen/issues/new