Doxygen文档所有条件定义

时间:2016-12-17 07:15:25

标签: c c-preprocessor doxygen

我有一个项目,我有大量的条件定义,使跨平台开发更容易。但是我在说服Doxygen提取所有定义时遇到了问题,因为它只会选择那些只发生在评估中的定义。

例如,在以下代码段中,Doxygen将记录TARGET_X86_64,但不记录TARGET_ARM64

#if defined(_M_ARM64) || defined(__arm64__) || defined(__aarch64__)
/** Build target is ARM64 if defined. */
#define TARGET_ARM64
#else
/** Build target is x86_64 if defined. */
#define TARGET_X86_64
#endif

启用EXTRACT_ALL没有帮助,禁用预处理会导致Doxygen根本不记录任何内容。如何获取doxygen来提取两种情况的文档?

1 个答案:

答案 0 :(得分:1)

我制作了一个冗长的“解决方案”,但有效。当你想拥有#elseif语句而不是仅仅使用纯#if语句时,它就不那么尴尬了。虽然两者都可行。

首先,定义所有内容而不关心条件逻辑。

/** Some define */
#define TARGET_DEFINE

/** Some other define */
#define OTHER_TARGET_DEFINE

其次,采用您最初用于创建定义的条件逻辑,并将其转换为取消定义逻辑。

#if !(ORIGINAL_LOGIC)
#undef TARGET_DEFINE
#endif

最后,更改条件逻辑,以便在doxygen进行预处理时不会定义任何内容。

#if !defined(DOXYGEN)
...