2010-03-23 3 views
13

Tutte le classi della mia libreria sono definite all'interno di uno spazio dei nomi. Quando creo una pagina principale per Doxygen, devo usare esplicitamente questo spazio dei nomi all'interno dei commenti per fare in modo che Doxygen generi collegamenti. Mi piacerebbe usare qualcosa come "using namespace" per l'intero blocco di commenti."using namespace" per commenti Doxygen

Un esempio:

/** 
* \mainpage My Library 
* 
* Use MyLibraryNamespace::MyClass to ... 
*/ 

Qui Doxygen genera automaticamente un link alla documentazione di MyLibraryNamespace :: MyClass.

/** 
* \mainpage My Library 
* 
* Use MyClass to ... 
*/ 

Qui Doxygen non genera un link alla documentazione di MyLibraryNamespace :: MyClass (come ci potrebbe essere più definizioni MyClass in diversi spazi dei nomi suppongo). Per facilitare la lettura, vorrei omettere il prefisso del namespace nel commento. È possibile senza dover digitare \ref MyLibraryNamespace::MyClass "MyClass" ogni volta?

risposta

14

È possibile eseguire questo lavoro per uno spazio dei nomi inserendo il proprio commento all'interno dello spazio dei nomi. Questo mi infastidisce considerevolmente in quanto abbiamo più domini nidificati e odio doverli usare nei commenti Doxygen.

namespace MyLibraryNamespace { 
/** 
* \mainpage My Library 
* 
* Use MyClass to ... 
*/ 
}; 

2016 Aggiornamento da Markdown prospettiva

sto usando Doxygen per C# documentazione per Realm (sì Doxygen gestisce la tipica C# commento formato XML troppo!). La pagina principale Markdown usa la @ref per riferirsi a classi namespace:

The main classes you will use are: 

- [Realm](@ref Realms.Realm) 
- [RealmObject](@ref Realms.RealmObject) 
- [RealmList](@ref Realms.RealmList) 
- [Transaction](@ref Realms.Transaction) 

si può vedere una versione reso online here

2

È possibile utilizzare alias come questo:

ALIASES += refmylib{1}="@ref MyLibraryNamespace::\1 \"\1\""

Questo è un esempio di utilizzo:

/** * \mainpage My Library * * Use @refmylib{MyClass} to ... */

E sopra saranno trattati da doxygen simili:

/** * \mainpage My Library * * Use @ref MyLibraryNamespace::MyClass "MyClass" to ... */