如何 link 到目录的文档

how to link to documentation of directory

我添加了 \dir 注释以提供目录附加文档。但是我无法使用任何我知道的 doxygen linking 技术 link 访问该目录文档。我的问题是:我如何正确地 link 到目录的文档?

以下是我尝试过的片段。我收到两个警告,但没有生成 link。 doxygen 手册的自动链接部分讨论了 Links to other members,但没有提到 links 到目录。 link 是否支持访问目录文档?如果是这样,我是做错了什么还是这是一个错误? (我现在正在使用 1.8.10。1.8.9.1 的行为方式相同。)

这是我试过的。我已经使用

记录了目录
/// \dir cpp/vtutil 
///      
/// \brief Brief description of the dir cpp/vtutil goes here
/// 
/// \details A more detailed description goes here. 
///        

我使用

引用目录
/// \file   
/// \brief  Implements the vt application class.
/// 
/// This file is in the \ref cpp/vtutil directory.
/// What about #cpp/vtutil

警告如下:

warning : unable to resolve reference to `cpp/vtutil' for \ref command
warning : explicit link request to 'cpp' could not be resolved

文档用于该目录,但似乎没有办法引用它。我真诚地感谢任何帮助。

link 到目录文档页面的正确方法是使用 \ref 命令。目录不支持使用 # 的显式 link。

/// \file   
/// \brief  Implements the vt application class.
/// 
/// This file is in the \ref cpp/vtutil directory.

此示例将生成 link 到 cpp/vtutil 文件夹的文档。但是,在使用绝对路径和带有 STRIP_FROM_PATH 的 doxygen 配置设置时确实需要小心。当我使用源代码树中的工作目录 运行 doxygen 时,我可以获得正确的 link 引用。但是当我从一个与源目录不同的构建目录 运行 并且需要使用 STRIP_FROM_PATH 时,我就有问题了。

Doxygen 对使用 \dir 命令记录目录时使用的路径非常宽容或灵活,但在使用 \ref 命令引用它时却相当挑剔。

我就是这样解决这个问题的,我认为这是 Doxygen 中的一个错误。

接受的解决方案对我不起作用。我发现 link 到目录的唯一方法是使用绝对路径名:

/// \brief Documentation linking to a directory
///
/// The files are in the \ref /home/user/project/include/subdir "include/subdir" directory.

通过使用\ref target "label",我们避免了文档中的完整路径,这当然是由开发环境给出的,与最终用户的安装目录无关。

但我们现在在源代码中仍然有绝对路径。不同的开发人员可能会有不同的路径,因此上述解决方案只能由单个开发人员使用。

相反,我在 Doxyfile.in 文件中添加了以下别名:

ALIASES += "link_to_subdir=\ref @PROJECT_SOURCE_DIR@/include/subdir \"include/subdir\""

文档现在看起来像这样:

/// \brief Documentation linking to a directory
///
/// The files are in the \link_to_subdir directory.

Doxyfile.in 是 CMake 解析生成 Doxygen 使用的 Doxyfile 的文件。我认为这是使用 Doxygen 的一种相当标准的方式(其他构建生成器具有相同的功能,可以代替使用)。例如,我的 Doxyfile.in 包含如下内容:

PROJECT_NAME           = "@PROJECT_NAME@"
PROJECT_NUMBER         = @PROJECT_VERSION@
OUTPUT_DIRECTORY       = @CMAKE_INSTALL_PREFIX@/@DOCUMENTATION_OUTPUT@
INPUT                  = @PROJECT_SOURCE_DIR@/include

在CMake中有一个命令:

configure_file("${CMAKE_CURRENT_LIST_DIR}/documentation/Doxyfile.in" "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile" @ONLY)

因此,CMake 将在项目的根目录中填写 @PROJECT_SOURCE_DIR@,从而导致文档中由 Doxygen 解析的绝对路径,但此路径取决于当前的开发环境。