Doxygen条件编译不生成文档
我是doxygen的相对初学者,正在编写一个C程序的文档 守则的一部分是:Doxygen条件编译不生成文档,doxygen,conditional-compilation,Doxygen,Conditional Compilation,我是doxygen的相对初学者,正在编写一个C程序的文档 守则的一部分是: \#include "options.h" // options.h contains \#define VAL0 0 // Possible values for PARAM \#define VAL1 1 \#define PARAM VAL0 // Here's the conditional compilation \#if (PARAM == VAL0) // code chunk, which does
\#include "options.h"
// options.h contains
\#define VAL0 0 // Possible values for PARAM
\#define VAL1 1
\#define PARAM VAL0
// Here's the conditional compilation
\#if (PARAM == VAL0)
// code chunk, which doesn't get compiled by Doxygen
\#endif
代码按预期使用GCC编译,但我没有得到Doxygen文档
好的,Doxygen不展开宏,所以我尝试:
\#define SYMEQ(A, B) (A == B) ? 1 : 0
\#if SYMEQ(PARAM, VAL0)
// code chunk
\#endif
设置氧发生器:
宏扩展=是
仅展开\u PREDEF=是
没有预定义的宏
按定义展开=SYMEQ
没有来自条件部分的强氧输出,仅限于它
我还尝试按SYMEQ(A,B)的定义扩展
也没有运气
我发现了一些简单名称的示例,然后是#ifdef NAME\code#endif,但没有一个具有宏函数
宏扩展
和仅扩展(u PREDEF
仅控制是否在代码中扩展宏,而不是在条件预处理器块中如何计算宏。例如,如果您有如下代码:
#define RET_TYPE int
/**
* Some function
*/
RET_TYPE func(void);
使用MACRO\u EXPANSION=NO
,这将由doxygen记录为RET\u TYPE func(void)
,宏不会展开。使用MACRO\u EXPANSION=YES
,这将被记录为int func(void)
,宏将被展开,生成的签名将被记录
要控制条件代码,您需要关注
ENABLE_PREPROCESSING
。如果此选项设置为NO
,则条件代码将被忽略,条件内的所有代码都将被记录。如果设置为YES
,则将对条件代码进行计算,并且只记录条件匹配的块。在这种情况下,您需要确保所有被评估的值都被正确定义,这可以通过允许doxygen评估包含文件(请参阅搜索包含
,包含路径
和包含文件模式
选项)或通过预定义宏以具有特定值来实现(请参见预定义的)。宏扩展
和仅扩展(PREDEF)仅控制是否在代码中扩展宏,而不是在条件预处理器块中如何计算宏。例如,如果您有如下代码:
#define RET_TYPE int
/**
* Some function
*/
RET_TYPE func(void);
如果使用MACRO\u EXPANSION=NO
,doxygen会将其记录为RET\u TYPE func(void)
,则宏不会展开。如果使用MACRO\u EXPANSION=YES
,则会将其记录为int func(void)
,则会展开宏并记录生成的签名
要控制条件代码,您需要关注启用预处理
。如果此选项设置为否
,则将忽略条件代码,并记录条件中的所有代码。如果设置为是
,则将计算条件代码,并且仅计算条件匹配的块在这种情况下,您需要确保所有被评估的值都定义正确,这可以通过允许doxygen评估包含文件来实现(请参阅搜索包含
,包含路径
和包含文件模式
选项),或通过预定义宏以使其具有特定值(请参见预定义的)。我刚刚遇到了问题#ifdef CONDITION\code不是由doxygen\#endif编译的,并通过蛮力将其修复,即手动将条件附加到设置预定义的=CONDITION1 CONDITION2…
我尝试了头文件解决方案——通过设置SEARCH\u INCLUDES
、include\u PATH
和include\u file\u PATTERNS
,生成一个带有条件的文件并将其包含在内,但它没有起作用。从
在源文件中,这意味着要修改源代码,所以我放弃了
搜索\u包括:
如果SEARCH#INCLUDES标记设置为YES(默认值),则如果找到一个#INCLUDE,将搜索INCLUDE#路径(见下文)中的INCLUDES文件
我刚刚遇到了doxygen\#endif未编译的问题#ifdef CONDITION\code
,并用蛮力解决了它,即手动将条件附加到设置预定义=条件1条件2…
我尝试了头文件解决方案——通过设置SEARCH\u INCLUDES
、include\u PATH
和include\u file\u PATTERNS
,生成一个带有条件的文件并将其包含在内,但它没有起作用。从
在源文件中,这意味着要修改源代码,所以我放弃了
搜索\u包括:
如果SEARCH#INCLUDES标记设置为YES(默认值),则如果找到一个#INCLUDE,将搜索INCLUDE#路径(见下文)中的INCLUDES文件