首页 > 解决方案 > 带有 *.in 文件的 Doxygen

问题描述

我用 *.in 文件生成函数

   class Foo
   {
   public:
   ...

      #define FUNCTION(returnType, getterName) \
         returnType getterName(uint8_t iValue) const;
      #include "Functions.in"
      #undef FUNCTION

   ...
   };

并想使用 Doxygen。Doxygen 配置如下所示:

...
INPUT                  = Path/To/Foo
...
FILE_PATTERNS          = *.in \
                         *.c \
                         *.cc \
                         *.cxx \
                         *.cpp \
                         *.c++ 
...
SEARCH_INCLUDES        = YES
...
INCLUDE_PATH           = Path/To/Foo
...

我可以在文档中看到 *.in 文件,但看不到类中的函数。此外,Doxygen 会产生以下警告

Foo.h:10: warning: include file Functions.in not found, perhaps you forgot to add its directory to INCLUDE_PATH?

有人知道如何将 Doxygen 与 *.in 文件一起使用吗?实际上可以将 Doxygen 与生成的代码一起使用吗?

标签: c++documentationdoxygen

解决方案


如果您阅读Doxygen 预处理文档,您会看到

用作 doxygen 输入的源文件可以由 doxygen 的内置 C 预处理器解析。

默认情况下,doxygen 只进行部分预处理。也就是说,它评估条件编译语句(如#if)并评估宏定义,但它不执行宏扩展。

可以更改此默认行为:

如果你想扩展 CONST_STRING 宏,你应该将配置文件中的MACRO_EXPANSION标签设置为YES.

所以解决方案是通过 Doxygen运行*.in文件,而是将MACRO_EXPANSION配置变量设置为YES,宏将被完全展开,并且应该解析它们的展开。


推荐阅读