Doxygen:如何记录未定义的宏?

4

我正在尝试使用Doxygen来记录一些控制选项的宏符号的函数,例如:

 //! \def BOOST_SOMEFEATURE
 /*! \brief Option macro that is not normally defined
  *  but can optionally be defined by consumers to activate the option.
 */

但是这段内容不会被索引,因为宏未定义,所以注释将被忽略。
只有在有类似于#define的情况下,Doxygen宏符号条目才会出现在文档中。
#define BOOST_SOMEFEATURE

在头文件和其他文件中。
除了像恶劣的伎俩那样强制记录宏符号之外,我能否做到呢?
  #undef BOOST_SOMEFEATURE

或者包含一个虚拟的.cpp文件,其中包含所有控制选项的宏符号的#define?
  #define BOOST_SOMEFEATURE
  #define BOOST_SOMEOTHERFEATURE
  ...

至少当我理解你的问题时,应该可以使用例如#ifdef DOXYGEN_GENERATION和在Doxyfile中定义DOXYGEN_GENERATION来围绕这些定义和文档创建一个块。 - albert
谢谢。听起来很有道理,但我还不明白如何在doxyfile中定义BOOST_SOMEFEATURE,以便Doxygen可以对其进行索引。能否再解释一下? - Paul A. Bristow
1个回答

4
做以下操作:
  1. Add the following line to your Doxyfile:

    PREDEFINED = _DOXYGEN_
    
  2. Put your #define macros inside an #ifdef _DOXYGEN_ section:

    #ifdef _DOXYGEN_
        /*!
         * Documentation describing the BOOST_SOMEFEATURE macro.
         */
        #define BOOST_SOMEFEATURE
    
        /*!
         * Documentation describing the BOOST_SOMEOTHERFEATURE macro.
         */
        #define BOOST_SOMEOTHERFEATURE
    #endif
    
使用这种方法,您的宏在正常构建期间不会被预处理器看到,但是Doxygen会看到。
您可以将此部分放置在代码中的任何位置:在.cpp文件、.h文件中或者如果愿意,可以创建一个虚拟的.cpp文件。
另请参阅。

谢谢这个 - 在头文件中对我非常有效,让我能够将文档与代码一起保留。 - Paul A. Bristow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接