自定义 doxygen 预处理器

customizing doxygen preprocessor

我是 Doxygen 的新手,无法确定我是否遗漏了特定的步骤或者代码太难解析了。该项目中几乎每个 class 都会 #include <common.hpp>,其中定义了以下内容:

#define DFS_NAMESPACE_BEGIN namespace dfs {
#define DFS_NAMESPACE_END }

例如 class Alg/Thing.hpp

#ifndef _DFS_ALG_THING_H
#define _DFS_ALG_THING_H

#include <common.hpp>

DFS_NAMESPACE_BEGIN

class Thing {
    ...
};

DFS_NAMESPACE_END

#endif

我有

这基于 Doxyfile 声称应该足够了。我已经尝试明确指定 common.hpp 路径、PREDEFINED、关闭 SKIP_FUNCTION_MACROS 和其他一些但没有成功。不过,我能得到 PREDEFINED 的最好结果是 class Thing 而不是 namespace Thing.

命名空间 do 如果我只是将它们写出来而不是使用上面的 define,则按预期工作,但我想保留这个宏(或者可能替换它与类似的?)以提高可读性。

这个可以修复吗?有没有另一种方法可以只用原始文本替换 DFS_NAMESPACE_* 之类的东西?感谢您的帮助!

好的,这不是必需的,但我能够让它与

一起工作
ENABLE_PREPROCESSING   = YES
MACRO_EXPANSION        = YES
EXPAND_ONLY_PREDEF     = YES
PREDEFINED             = DFS_NAMESPACE_BEGIN="namespace dfs {"
PREDEFINED            += DFS_NAMESPACE_END="}"
SEARCH_INCLUDES        = YES
SKIP_FUNCTION_MACROS   = YES

我想我原来的 PREDEFINED 枚举有问题,我用 \ 转义了它,但我认为前导空格可能导致了问题?

有点沮丧,因为我不想在 Doxyfile 中枚举所有我想要的宏。希望有一天有人能从中受益。