【问题标题】:How to ignore generated code in doxygen如何忽略 doxygen 中生成的代码
【发布时间】:2015-06-15 19:10:04
【问题描述】:

所以,我们在一个大项目中使用 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 cmets。

目前考虑的解决方案

  1. 什么都不做

什么都不做,忽略 doxygen 错误。 不是很满意。

  1. 生成虚拟文件

在运行之前生成像my_generated_code_fragment.h这样的虚拟文件 氧气。

这会在构建脚本中造成复杂性, “使用 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 版。

【问题讨论】:

  • 我绝不是 doxygen 内部结构方面的专家。但我相信你最好的选择是(3),使用预处理器标志。请告诉我们您是如何解决这个问题的。

标签: doxygen


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2015-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    相关资源
    最近更新 更多