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