Doxygen:强制记录未声明的功能

Doxygen: Force undeclared functions to be documented

我们的 C++ 程序有一个内置的脚本接口,可以在其中 运行 编写脚本。这些脚本可以访问 C++ 程序提供的便捷功能。

现在我们希望 Doxygen 创建脚本可以访问的函数的文档。这样的函数声明如下所示:

void ScriptEngine::load_script(const QString &path) {       
//...

    /*! \fn sleep_ms(const unsigned int timeout_ms)
        \brief sleeps for timeout_ms milliseconds.
        \param timeout_ms 
    */
    (*lua)["sleep_ms"] = [](const unsigned int timeout_ms) {
        //sleep(timeout_ms)
    };

    //more convenience functions..
//...
}

显然 Doxygen 不会包含

sleep_ms(const unsigned int timeout_ms)

进入文档。有没有办法告诉 Doxygen 这样做?

这样做:

  1. 将以下行添加到您的 Doxyfile:

    PREDEFINED = _DOXYGEN_
    
  2. 确保 Doxyfile 中的 ENABLE_PREPROCESSING 标签设置为 YES.

  3. 将未声明函数的声明和文档放在 #ifdef _DOXYGEN_ 部分。

    #ifdef _DOXYGEN_
        /*! \fn sleep_ms(const unsigned int timeout_ms) 
            \brief sleeps for timeout_ms milliseconds.
            \param timeout_ms
        */
        void sleep_ms(const unsigned int timeout_ms);
    #endif
    

不要像您之前尝试的那样将上述代码放在方法或函数中,例如 ScriptEngine::load_script()。并且不要将它放在命名空间或 class 中,除非实际上声明的函数是该命名空间或 class.

的成员

使用此方法,您的声明不会在正常构建期间产生链接器错误,但会被 Doxygen 看到。

另请参阅

http://www.doxygen.nl/manual/config.html#cfg_predefined