在不启用 EXTRACT_ALL 的情况下使用 Doxygen 记录枚举 class 值
Document enum class values using Doxygen without enabling EXTRACT_ALL
如果不设置 EXTRACT_ALL
,我无法显示枚举值 类 的文档。 preserve、t运行cate 和 append 的注释不存在。枚举本身已记录在案。如果我启用 EXTRACT_ALL
我会得到一个列表。
我的代码是:
namespace grimoire
{
...
/// @brief Behaviour of function open_for_write for already existing files.
/// @see open_for_write()
enum class OpenMode
{
preserve = std::ofstream::out, /// Already existing file aren't opened.
truncate = std::ofstream::trunc, /// Discard existing contents.
append = std::ofstream::app /// Append to existing contents.
};
...
}
我正在使用 CMake 来 运行 Doxygen:
#set(DOXYGEN_EXTRACT_ALL YES)
doxygen_add_docs(
docs
"${CMAKE_CURRENT_SOURCE_DIR}/include/grimoire"
"${CMAKE_CURRENT_SOURCE_DIR}/src")
编辑:
它甚至不适用于经典枚举且没有显式值。看来跟我的设置有关
已解决:
我必须向封闭的命名空间添加注释。 Doxygen 提取了枚举本身和其他东西,如函数和 类 在该命名空间内,但没有提取枚举条目。
Doxygen 并不总是选择一个枚举,这可以通过使用 \file
命令来克服。
此外,您在 定义之后记录了枚举值,这意味着您不应使用 ///
而应使用 ///<
所以有限的例子看起来像:
/// \file
/// @brief Behavior of function open_for_write for already existing files.
/// @see open_for_write()
enum class OpenMode
{
preserve = std::ofstream::out, ///< Already existing file aren't opened.
truncate = std::ofstream::trunc, ///< Discard existing contents.
append = std::ofstream::app ///< Append to existing contents.
};
编辑:
根据 OP 的回答,给定的解决方案并不完整,因为原始问题嵌入在命名空间中。为了能够在这种情况下显示枚举,仅添加 \file
是不够的,但还需要记录命名空间。所以一个更完整的例子:
/// \file
/// The namespace documentation
namespace NS
{
/// @brief Behavior of function open_for_write for already existing files.
/// @see open_for_write()
enum class OpenMode
{
preserve = std::ofstream::out, ///< Already existing file aren't opened.
truncate = std::ofstream::trunc, ///< Discard existing contents.
append = std::ofstream::app ///< Append to existing contents.
};
};
如果不设置 EXTRACT_ALL
,我无法显示枚举值 类 的文档。 preserve、t运行cate 和 append 的注释不存在。枚举本身已记录在案。如果我启用 EXTRACT_ALL
我会得到一个列表。
我的代码是:
namespace grimoire
{
...
/// @brief Behaviour of function open_for_write for already existing files.
/// @see open_for_write()
enum class OpenMode
{
preserve = std::ofstream::out, /// Already existing file aren't opened.
truncate = std::ofstream::trunc, /// Discard existing contents.
append = std::ofstream::app /// Append to existing contents.
};
...
}
我正在使用 CMake 来 运行 Doxygen:
#set(DOXYGEN_EXTRACT_ALL YES)
doxygen_add_docs(
docs
"${CMAKE_CURRENT_SOURCE_DIR}/include/grimoire"
"${CMAKE_CURRENT_SOURCE_DIR}/src")
编辑:
它甚至不适用于经典枚举且没有显式值。看来跟我的设置有关
已解决:
我必须向封闭的命名空间添加注释。 Doxygen 提取了枚举本身和其他东西,如函数和 类 在该命名空间内,但没有提取枚举条目。
Doxygen 并不总是选择一个枚举,这可以通过使用 \file
命令来克服。
此外,您在 定义之后记录了枚举值,这意味着您不应使用 ///
而应使用 ///<
所以有限的例子看起来像:
/// \file
/// @brief Behavior of function open_for_write for already existing files.
/// @see open_for_write()
enum class OpenMode
{
preserve = std::ofstream::out, ///< Already existing file aren't opened.
truncate = std::ofstream::trunc, ///< Discard existing contents.
append = std::ofstream::app ///< Append to existing contents.
};
编辑:
根据 OP 的回答,给定的解决方案并不完整,因为原始问题嵌入在命名空间中。为了能够在这种情况下显示枚举,仅添加 \file
是不够的,但还需要记录命名空间。所以一个更完整的例子:
/// \file
/// The namespace documentation
namespace NS
{
/// @brief Behavior of function open_for_write for already existing files.
/// @see open_for_write()
enum class OpenMode
{
preserve = std::ofstream::out, ///< Already existing file aren't opened.
truncate = std::ofstream::trunc, ///< Discard existing contents.
append = std::ofstream::app ///< Append to existing contents.
};
};