自定义 DICE 预处理器

customizing doxygen preprocessor

本文关键字:处理器 预处理 DICE 自定义      更新时间:2023-10-16

我是Doxygen的新手,无法弄清楚我是否缺少特定步骤或代码太难解析。 这个项目中的几乎每个类都会#include <common.hpp>,其中定义了以下内容:

#define DFS_NAMESPACE_BEGIN namespace dfs {
#define DFS_NAMESPACE_END }

例如在类 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

我有

  • ENABLE_PREPROCESSING=YES
  • MACRO_EXPANSION=YES
  • EXPAND_ONLY_PREDEF=NO
  • SEARCH_INCLUDES=YES

基于Doxyfile声称的内容应该足够了。 我尝试明确指定common.hpp路径,PREDEFINED,关闭SKIP_FUNCTION_MACROS,以及其他一些没有成功。 不过,我能得到PREDEFINED给我的最好的东西不是class Thing它让它namespace Thing

如果我只是写出命名空间而不是使用上述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 中枚举我想要的所有宏。 希望有一天有人能从中受益。