【问题标题】:customizing doxygen preprocessor定制 doxygen 预处理器
【发布时间】:2016-10-04 08:58:42
【问题描述】:

我是 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 以及其他一些但没有成功。不过,我能得到的最好的PREDEFINEDclass Thing,而不是namespace Thing

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

这可以修复吗?是否有另一种方法可以只是原始文本替换 DFS_NAMESPACE_* 或其他东西?感谢您的帮助!

【问题讨论】:

    标签: c++ macros doxygen


    【解决方案1】:

    好的,这应该不是必需的,但我能够使用它

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

    【讨论】:

      猜你喜欢
      • 2011-01-22
      • 1970-01-01
      • 2018-06-18
      • 2015-08-28
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 2021-12-03
      相关资源
      最近更新 更多