Doxygen:强制记录未声明的函数

时间:2017-02-28 13:50:34

标签: doxygen

我们的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 个答案:

答案 0 :(得分:0)

这样做:

  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
    
  4. 不要像上次尝试的那样将上述代码放在ScriptEngine::load_script()等方法或函数中。并且不要将它放在命名空间或类中,除非事实上声明的函数是该命名空间或类的成员。

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

    另见

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