首页 > 解决方案 > 知道为什么 Doxygen 找到 version.h.in 但不将其解析为 C 或 C++?

问题描述

我有很多项目都有一个version.h.in文件,CMake 将其转换为动态添加项目的当前版本。

这是一个例子version.h.in

#define    LPP_VERSION_MAJOR   @LPP_VERSION_MAJOR@
#define    LPP_VERSION_MINOR   @LPP_VERSION_MINOR@
#define    LPP_VERSION_PATCH   @LPP_VERSION_PATCH@
#define    LPP_VERSION_BUILD   @LPP_VERSION_BUILD@
#if LPP_VERSION_PATCH
#define    LPP_VERSION_STRING  "@LPP_VERSION_MAJOR@.@LPP_VERSION_MINOR@.@LPP_VERSION_PATCH@"
#else
#define    LPP_VERSION_STRING  "@LPP_VERSION_MAJOR@.@LPP_VERSION_MINOR@"
#endif

int             get_major_version();
int             get_release_version();
int             get_patch_version();
char const *    get_version_string();

不知何故,Doxygen 1.8.13 没有在这个文件中提取任何内容。看起来它被忽略了。

我使用EXTENSION_MAPPINGandFILE_PATTERNS但它似乎没有帮助:

EXTENSION_MAPPING      = h.in=C++ \
                         hpp.in=C++

FILE_PATTERNS          = *.h \
                         *.h.in \
                         *.hpp \
                         *.hpp.in \
                         *.cpp \
                         *.c

我会错过什么吗?

请注意,该version.h.in文件出现在 Doxygen 的输出中。所以FILE_PATTERNS按预期工作。但是,它在文件中没有检测到任何内容。例如,我有一个\file这样的条目:

/** \file
 * \brief This library version information.
 *
 * ...snip...
 */

简短和完整的文件描述将被忽略。

重要提示:我正在尝试获取version.h.in文件。我知道我可以改为告诉 Doxygen,version.h但随后版本会在文档中更改,这不是我想要的。

更新

正如@anarthal 在评论中提到的那样,问题似乎是EXTENSION_MAPPING需要一个扩展名。不是双重扩展。

我在 github 上提交了一个错误报告。

对于我的项目,我实际上可以使用.in(即in=C++),因为我只有 C++,但我希望这会在某个时候得到解决。

标签: c++cdocumentationdoxygen

解决方案


推荐阅读