如何忽略doxygen中生成的代码

时间:2015-06-15 19:10:04

标签: doxygen

所以,我们在一个大项目中使用doxygen。

部分源代码是在构建期间生成的, 比如my_generated_code_fragment.h

它在源代码中使用,如此

档案foo.cc

void foo()
{
#include "my_generated_code_fragment.h"
}

现在,当从源代码管理下的存储库运行doxygen 时, doxygen正确地抱怨文件my_generated_code_fragment.h丢失, 有一个错误:

  

foo.cc:1234:警告:不包括my_generated_code_fragment.h文件   发现,也许你忘了把它的目录添加到INCLUDE_PATH?

问题

我们不想先执行完整构建,只是为了生成缺失 文件,以生成文档。 请注意,生成的代码无论如何都不包含doxygen注释。

到目前为止考虑的解决方案

  1. 什么都不做
  2. 什么都不做,忽略doxygen错误。 不太满意。

    1. 生成虚拟文件
    2. 在运行之前生成my_generated_code_fragment.h之类的虚拟文件 doxygen的。

      这会在构建脚本中产生复杂性, “使用doxygen”现在在不同的项目中有所不同, 因为包含生成代码的文件不同。

      1. 使用预处理程序标志
      2. 将代码更改为

        void foo()
        {
        #ifndef IN_DOXYGEN
        #include "my_generated_code_fragment.h"
        #undef IN_DOXYGEN
        }
        

        并设置PREDEFINED

        这是迄今为止考虑的最佳解决方案,但它意味着更改代码。

        问题

        是否有更好的选择,比如使用Doxyfile中的设置告诉doxygen 该文件my_generated_code_fragment.h预计会丢失, 应该被忽略?

        注意:

        EXCLUDE不起作用, 因为在解析文件foo.cc时会看到错误,而不是在解析生成的代码时看到错误。

        目前使用doxygen版本1.8.5。

1 个答案:

答案 0 :(得分:1)

记录当时的解决方案。

解决方案3,在使用doxygen构建时使用预处理器标志,并且更改使用生成内容的代码的(小)部分运行良好。

这允许在“原始”源代码上使用doxygen,从git中提取。