我是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中想要的所有宏。希望有人有一天能从中受益。

09-06 20:00