2016-06-04 7 views
0

Ich bin neu bei Doxygen und kann nicht herausfinden, ob ich einen bestimmten Schritt fehlt oder der Code ist zu schwierig für die Analyse. So ziemlich jede Klasse in diesem Projekt wird #include <common.hpp>, wo die folgend definiert:Customizing Doxygen Preprocessor

#define DFS_NAMESPACE_BEGIN namespace dfs { 
#define DFS_NAMESPACE_END } 

So zum Beispiel in der Klasse Alg/Thing.hpp

#ifndef _DFS_ALG_THING_H 
#define _DFS_ALG_THING_H 

#include <common.hpp> 

DFS_NAMESPACE_BEGIN 

class Thing { 
    ... 
}; 

DFS_NAMESPACE_END 

#endif 

Ich habe

  • ENABLE_PREPROCESSING=YES
  • MACRO_EXPANSION=YES
  • EXPAND_ONLY_PREDEF=NO
  • SEARCH_INCLUDES=YES

das, was die Doxyfile Ansprüche aus genug sein sollte. Ich habe versucht, common.hpp Weg, PREDEFINED, SKIP_FUNCTION_MACROS, und einige andere ohne Erfolg explizit zu spezifizieren. Das beste, was ich bekommen konnte PREDEFINED, um mir zu geben, obwohl, statt class Thing es machte es namespace Thing.

Namespaces tut wie erwartet funktionieren, wenn ich sie nur, anstatt die oben define der Verwendung schreiben, aber ich möchte dieses Makro halten (oder vielleicht ist es mit einem ähnlichen ersetzen?) Zur besseren Lesbarkeit.

Ist das reparierbar? Gibt es einen anderen Weg, vielleicht nur Rohtext - ersetzen Sie die DFS_NAMESPACE_* oder etwas? Danke für jede Hilfe!

Antwort

1

Ok dies sollte nicht notwendig sein, aber ich konnte es mit

ENABLE_PREPROCESSING = YES 
MACRO_EXPANSION  = YES 
EXPAND_ONLY_PREDEF  = YES 
PREDEFINED    = DFS_NAMESPACE_BEGIN="namespace dfs {" 
PREDEFINED   += DFS_NAMESPACE_END="}" 
SEARCH_INCLUDES  = YES 
SKIP_FUNCTION_MACROS = YES 

zum Laufen bringen Ich glaube, ich PREDEFINED Aufzählung ein Problem mit der Original hatte, entkam ich es mit \ aber ich denke, die führende Leerzeichen könnten Probleme verursacht haben?

Nur ein wenig frustrierend, weil ich nicht alle Makros in der Doxyfile aufzählen will. Hoffentlich profitiert aber irgendwann jemand davon.