如何忽略doxygen中生成的代码

How to ignore generated code in 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: warning: include file my_generated_code_fragment.h not found, perhaps you forgot to add its directory to INCLUDE_PATH?

问题

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

目前考虑的解决方案

  1. 什么都不做

什么也不做,忽略 doxygen 错误。 不太满意。

  1. 生成虚拟文件

在 运行 之前生成类似 my_generated_code_fragment.h 的虚拟文件 氧气.

这会使构建脚本变得复杂, "using doxygen" 现在在不同的项目中是不同的, 因为包含生成代码的文件不同。

  1. 使用预处理器标志

将代码更改为

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。

记录当时采取的解决方案。

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

这允许在从 git.

提取的 "raw" 源代码上使用 doxygen