## Beispiel: Übersetzen der Datei HelloWorld.c

### Einsatzmöglichkeiten

Sie übersetzen und linken die Datei sys/src/SAPDB/HelloWorld.c zu einem ausführbaren Programm usr/pgm/hello (bzw. usr\pgm\hello.exe unter Microsoft Windows).

### Voraussetzungen

· Sie haben die Datei sys/src/SAPDB/HelloWorld.c erstellt.

· Sie haben die Include-Datei sys/src/SAPDB/HelloWorld.h erstellt.

### Ablauf

...

1. Sie starten den MAKE-Vorgang (VMAKE-Version fast):

imf.pl hello.lnk

2. VMAKE ermittelt die benötigten Dateien:

¡ VMAKE erkennt die Beschreibungsdatei sys/desc/hello.lnk anhand ihrer Dateiendung .lnk als die Beschreibung eines ausführbaren Programms. Die Beschreibung enthält nur die Datei :SAPDB/HelloWorld.c; der Doppelpunkt steht für das Verzeichnis mit den Moduldateien sys/src.

¡ VMAKE erkennt die Moduldatei sys/src/SAPDB/HelloWorld.c anhand ihrer Dateiendung .c als eine Moduldatei, die mit dem C-Kompilierer übersetzt werden muss. Die von dieser Moduldatei benötigten Include-Dateien werden in der Beschreibungsdatei sys/desc/SAPDB.com aufgeführt:
HelloWorld.c inc=:SAPDB/HelloWorld.h
In dieser Zeile können weitere Optionen für den Kompilierer stehen.

¡ Die Include-Datei sys/src/SAPDB/HelloWorld.h benötigt keine weiteren Dateien, ansonsten müssten diese Abhängigkeiten ebenfalls in SAPDB.com eingetragen werden.

3. VMAKE aktualisiert die benötigten Dateien:

¡ Include-Dateien:
HelloWorld.h, HelloWorld.c fast, hello.lnk fast
Diese kopiert VMAKE aus dem Entwicklungsbereich in ein entsprechendes Unterverzeichnis sys/wrk/incl, in diesem Fall nach sys/wrk/inl/SAPDB/HelloWorld.h. Dateinamen in #include-Anweisungen sind deshalb immer relativ zu sys/wrk/incl anzugeben.

¡ C-Quellen:
HelloWorld.h, HelloWorld.c fast, hello.lnk fast
Diese werden mit Hilfe des C-Kompilierers in Objektdateien übersetzt. Objektdateien können in drei Versionen (VMAKE-Versionen) erzeugt werden: fast (mit Optimierung) oder slow (mit Assertions und Traceausgaben). In diesem Fall wird die erzeugte Datei nach sys/wrk/fast/obj/SAPDB/HelloWorld.o geschrieben. Auch unter Microsoft Windows erhalten Objektdateien die Dateiendung .o. Zum Übersetzen wird die Quelldatei in das Verzeichnis sys/wrk/fast/tmp kopiert. Alle Zwischenergebnisse (diese fallen insbesondere bei PASCAL-Quellen an) werden in diesem Verzeichnis erzeugt und können beim Auftreten eines Fehlers dort überprüft werden.

¡ Ausführbare Programme:
HelloWorld.h, HelloWorld.c fast, hello.lnk fast
Diese werden gelinkt und nach usr/pgm kopiert. Unter UNIX wird dabei usr/pgm/hello.f erzeugt und darauf ein Link im Dateisystem unter usr/pgm/hello eingetragen. Unter Microsoft Windows wird die Datei usr\pgm\hello.exe.ferzeugt und nach usr\pgm\hello.exe kopiert.

4. Sie zeigen die VMAKE-Protokolle hello.lnk.p0 (Kopie der Bildschirmausgabe) und hello.lnk.x0 (Auflistung aller relevanten Zeitstempel sowie der ausgeführten Aktionen) an:

ipf.pl hello.lnk

#### Varianten

· Erzwungene Übersetzung: Damit wird das angegeben Ziel neu erzeugt. Ein ausführbares Programm wird neu gelinkt.

imf.pl -u hello.lnk

hello.lnk fast

· Option -U: Damit werden das angegebene Ziel und alle dafür benötigten Moduldateien neu erzeugt.

imf.pl -U hello.lnk

HelloWorld.c fast
hello.lnk fast

· Option -U -I: Damit werden das angegebene Ziel, alle dafür benötigten Module und alle benötigten Include-Dateien neu erzeugt.

imf.pl -U -I hello.lnk

HelloWorld.h
HelloWorld.c fast
hello.lnk fast

· Option -e: Sie weisen VMAKE an, alle Ziele mit Debuginformationen zu erzeugen (siehe Aktivieren des Debug-Modus).

imf.pl -U -e hello.lnk

HelloWorld.c fast debug
hello.lnk fast debug

Danach kann usr/pgm/hello im Debugger gestartet werden. Die Quelldateien werden nach dem Übersetzungsvorgang nach sys/wrk/fast/debug kopiert. Dies ist vor allem für PASCAL-Moduldateien wichtig, da diese nicht im Quelltext debugt werden können, sondern nur anhand der generierten C-Datei.

5. Anzeigen der neu zu erzeugenden Ziele:

imf.pl -u -n hello.lnk

6. Anzeigen der benutzten Modul- und Beschreibungsdateien:

imf.pl -m hello.lnk

7. Anzeigen der benutzten Modul- und Beschreibungsdateien sowie der Abhängigkeiten:

imf.pl -C hello.lnk