在此代码中,此示例在此处连接来自不同库中的多个文件:
template <typename T1=void,typename T2=void,typename T3=void>
struct Implements ;
template <typename T1>
struct Implements<T1,void,void>
: public virtual T1
{ } ;
template <typename T1,typename T2>
struct Implements<T1,T2,void>
: public virtual T1
, public virtual T2
{ } ;
template <typename T1,typename T2,typename T3>
struct Implements<T1,T2,T3>
: public virtual T1
, public virtual T2
, public virtual T3
{ } ;
struct MySuper { } ;
struct MyClass : public Implements<MySuper> { } ;
如何让doxygen识别MySuper
是MyClass
的超类?
目前,在班级列表中,它列出了T1
,T2
和T3
作为其中的超类......有时候。其他时候它完全忽略了它。
我使用doxygen
版本1.8.4(虽然1.8.14不会改变此行为)。
此示例中的类图将Implements显示为派生自[字面] MySuper
,T2
和T3
。 (注意:这也表明它不了解部分模板特化和默认参数。)在我的实际代码中,它通常不会显示MySuper
而是显示T1
。< / p>
这是doxygen -g
文件和我的文件之间的差异:
28c28
< PROJECT_NAME =
---
> PROJECT_NAME = "MyLibrary"
41c41
< OUTPUT_DIRECTORY =
---
> OUTPUT_DIRECTORY = generated
173c173
< TAB_SIZE = 8
---
> TAB_SIZE = 4
530c530
< WARN_IF_UNDOCUMENTED = YES
---
> WARN_IF_UNDOCUMENTED = NO
571c571
< INPUT =
---
> INPUT = ../impl ../include
588c588
< FILE_PATTERNS =
---
> FILE_PATTERNS = *.c *.cpp *.cxx *.hxx *.hpp *.h *.dox
594c594
< RECURSIVE = NO
---
> RECURSIVE = YES
991c991
< GENERATE_LATEX = YES
---
> GENERATE_LATEX = NO
1308c1308
< GENERATE_TAGFILE =
---
> GENERATE_TAGFILE = generated/MyLibrary.tag
Implements
类位于MyLibrary中,用户代码位于不同的库中。我对用户项目有一个类似的doxy,主要区别于
TAGFILES = ../../MyLibrary/docs/generated/MyLibrary.tag=../../../../MyLibrary/docs/generated/html
在这种情况下,它根本不会扩展模板参数(它是逐字T1
,T2
和T3
而不是&#39; MySuper&#39 ;,T2
和T3
)。