Ich habe versucht, mein C++ - Projekt mit Doxygen zu dokumentieren, mit wenig Erfolg: Doxygen erkennt bestimmte Makros nicht und folglich werden ganze Funktionen falsch interpretiert und die meiste Zeit erzeugt keine Dokumente, obwohl sie spezielle Kommentarblöcke haben . Typischer Fall:Doxygen korrekt verwenden
/**
* \def __MYLIB_FUNCTION_ATTRIBUTE(...)
* \brief Some brief comment
* \details Detailed doc
* \sa Some valid references
*/
#define __MYLIB_FUNCTION_ATTRIBUTE(...) __attribute__(__VA_ARGS__)
/**
* \def IN
* \brief Tag for input arguments to a function
* \details Blah...
* \sa OUT
*/
#define IN
/**
* \def OUT
* \brief Tag for output arguments to a function
* \details Blah...
* \sa IN
*/
#define OUT
class MyClass {
public:
/**
* \fn MyClass()
* \brief Constructor for MyClass
* \details Hi!
*/
__MYLIB_FUNCTION_ATTRIBUTE(__always_inline__)
MyClass() {
}
/**
* \fn const char *doNothing(const char *s IN)
* \brief A weird function
* \details Some very weird doc
* \param[in] s No good parameter
*/
const char* __SXC_FUNCTION_ATTRIBUTE(__const__) doNothing(const char *s IN) {
return s;
}
};
Dokumentation für die obige Klasse erzeugt wird, immer eine Beschreibung für doNothing
und IN
fehlt als Funktion interpretiert! Mache ich hier etwas falsch?
Was sind die Werte von MACRO_EXPANSION et al. (http://www.doxygen.nl/config.html#cfg_macro_expansion) in Ihrer Konfigurationsdatei? –
@Eric: Ich glaube, du hast das Problem sofort erkannt! MACRO_EXPANSION ist auf YES gesetzt, aber muss ich auch zusätzliche Include-Verzeichnisse angeben? Derzeit werden alle verwendeten Header auch von Doxygen verarbeitet. Ich werde den Rest der Parameter überprüfen und auf Sie zurückkommen. – themoondothshine
Hier sind die Konfigurationsparameter erstellt: 'ENABLE_PREPROCESSING = YES MACRO_EXPANSION = YES EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = zu bejahen ist – themoondothshine