Eine kurze Anleitung, wie man Dokumentationen
mit Doxygen erstellt und auf dem Server ablegt.


1. Im Allgemeinen werden nur die *.hh-Dateien dokumentiert.
   Dort muss also alles drin stehen, was einen Anwender so
   interessieren könnte. Als Beispiele kann man sich die
   Projekte 'alarm' oder 'accdevice' angucken. Das Doxygen-
   Handbuch findet man unter
   www.stack.nl/~dimitri/doxygen/manual.html.


2. Directory 'doc' ersellen

    $ cd ~/workspace/<project>
    $ mkdir doc


3. Entweder Default 'Doxyfile' auf 'doc' generieren

    $ cd doc
    $ doxygen -g

  und die Datei editieren. Siehe dazu Punkt 4.
  Oder die Vorlage aus dem Projekt 'uti' benutzen 

    $ cd doc
    $ cp $uti/Doxyfile.template Doxyfile

  und die darin mit '[tbs]' gekennzeichneten Stellen 
  anpassen bzw. ergänzen. Danach weiter mit Punkt 5.
  Zur Erklärung evtl. in Punkt 4 nachlesen.


4. Doxyfile-Vorlage editieren.

   a. Einige Tags müssen angepasst werden. Hier ein Beispiel
      für das Projekt MX:

      PROJECT_NAME           = "MX - Equipment Model for Pulsed Magnets"
      ALWAYS_DETAILED_SEC    = YES
      EXTRACT_STATIC         = YES
      INPUT                  = ../
                               /usr/local/acc/production/include/asl/current \
                               /usr/local/acc/production/include/vme/current \
      FILE_PATTERNS          = default-usrs.hh \
                               default-usrs-vme.hh \
                               therapy-usrs.hh \
                               therapy-*-usrs.hh \
                               mx-*-adapter.hh \
                               x2y.hh \
                               mx-helpers.hh \
                               mx-device.hh \
                               mx-usrs.hh
      ALIASES                = "updates=\par Updates:\n" \
                               "eqmodversion=\par Equipment model version:\n" \
                               "property=\par Property:"  \
                               "call=\par Call:\n"
      WARN_IF_UNDOCUMENTED   = YES
      GENERATE_TREEVIEW      = YES
      INCLUDE_PATH           = /usr/local/acc/production/include/asl/current \
                               /usr/local/acc/production/include/vme/current

      Unter 'FILE_PATTERNS' werden die Dateien aufgeführt, die
      Incode-Doku enthalten, deren Dirctory, in der Regel '../',
      unter 'INPUT'. Dokumentierte Dateien, die von den angegebenen 
      Dateien inkludiert werden, z.B. mx-dev-def.hh, müssen nicht 
      angegeben werden, aber deren Directories. 

      Für USRs gilt: 
      - Default- und Therapie-USRs müssen (leider) explizit
        angegeben werden. 
      - Entweder 'default-usrs-vme.hh' oder 'default-usrs-x86.hh' 
        angeben. 
      - Nur die Therapie-USRs angeben, die vom Gerätemodell
        benutzt werden.
      - Möchte man die USR-Adapter dokumentiert haben, diese
        unter FILE_PATTERNS passend definieren. 

   b. Möchte man Beispiel-Programme einbinden, sollten diese
      auf 'doc' liegen. Dann braucht man

      EXAMPLE_PATH           = .
      EXAMPLE_PATTERNS       = *.hh *.cc

   c. LaTeX braucht man in der Regel nicht.

      GENERATE_LATEX         = NO

   d. Nervt der Bildschirm-Output von doxygen, dann

      QUIET                  = YES


5. Dokument generieren

    $ doxygen

   Es wird eine Directory ~/workspace/<project>/doc/html
   erstellt und die erstellten Dateien dort abgelegt.
   Die Datei 'index.html' ist die Start-Datei für den Browser.

   Entsprechende Directories werden erzeugt, wenn LaTeX-
   Output usw. aktiviert ist.


6. Inhalt des Directories 'html' auf den Server kopieren. 

   * Am einfachsten geht es wohl mit cadaver.

     a. Wechseln nach ~/workspace/<project>/doc/html

     b. Cadaver aufrufen und einloggen.

          $ cadaver https://www.acc.gsi.de/dav/documentation/<project>
          Userame:
          Password:

        Bei Gerätemodellen ist das '<project>' in der URL 
        gleich 'eq-models/<eqmod>'.

     c. Alle Dateien kopieren

          dav:/dav/documentation/<project>/> mput *

     Existiert das Ziel-Directory noch nicht, kann man 
     es mit cadaver auch erzeugen.

       dav:/dav/documentation/> mkcol <project>


   * Man kann auch den Konqueror benutzen, Aufruf 
     einfach mit

       $ konqueror &

     im Terminalfenster und vorgehen wie folgt.

     a. Wechseln nach ~/workspace/<project>/doc/html

     b. Alle Dateien selektieren (select all) und kopieren 
        (copy) (mit Hilfe der Ringfinger-Maustaste - was für 
        Rechtshänder die rechte ist).

     c. Wechseln nach 'webdavs://www-acc.gsi.de/dav/documentation/'.
        Einloggen mit Linux-Username und Passwort.
        Dann sollte man die verschiedenen <project>-Directories
        sehen, z.B. 'accdata', 'alarm', 'eq-models' usw.

     d. In das <project>-Directory wechseln und Dateien einfügen 
        (paste), wobei man die alten Dateien überschreibt 
        (overwrite all).

     Es wird nicht empfohlen, das komplette Directory 'html'
     zu kopieren und es im Zielverzeichnis in <project> 
     umzubenennen, wobei das alte <project>-Directory gelöscht
     werden muss. Im alten Directory können noch weitere Dateien
     liegen, die dann mitgelöscht würden, was zu toten Links 
     im Wiki führt.
   

   * Das Kopieren geht auch mit Eclipse, das scheint aber etwas
     unhandlich zu sein. Wer rausgefunden hat, wie es richtig
     geht, sage bitte Bescheid.


7. Ebenso wird die PDF-Datei des Gerätemodells auf den Server 
   kopiert. Beispiel mit cadaver:

   a. Wechseln nach ~/workspace/<eqmod>/doc

   b. $ cadaver https://www.acc.gsi.de/dav/documentation/eq-models/<eqmod>
      Userame:
      Password:

      dav:/dav/documentation/eq-models/<eqmod>/> put gm-<eqmod>.pdf

   Beachten: Das 'eq-models' in der URL und 'put' statt 'mput'.


8. Nun kann man sich mit jedem Browser von jedem Rechner aus
   die Doku unter "http://www-acc.gsi.de/data/documentation/"
   angucken.

   Im BEL-Wiki gibt es unter "Documentation" die Links 
   "Device Access" und "Equipment Models", die dort hin 
   verweisen.

Topic revision: r16 - 25 Jul 2014, LudwigHechler
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback