所以,我们在一个大项目中使用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注释。
什么都不做,忽略doxygen错误。 不太满意。
在运行之前生成my_generated_code_fragment.h
之类的虚拟文件
doxygen的。
这会在构建脚本中产生复杂性, “使用doxygen”现在在不同的项目中有所不同, 因为包含生成代码的文件不同。
将代码更改为
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。
答案 0 :(得分:1)
记录当时的解决方案。
解决方案3,在使用doxygen构建时使用预处理器标志,并且更改使用生成内容的代码的(小)部分运行良好。
这允许在“原始”源代码上使用doxygen,从git中提取。