5.6 Kompilieren von Interface- und Binärdateien für Imports mit use

Während der Entwicklung einer IDM-Applikation und der Nutzung mit Quelltext-Dateien dienen die Interface-Dateien als Repräsentation der extern verfügbaren (exportierten) Objekte eines Moduls, also der Schnittstelle nach außen. Durch die Trennung von Schnittstellen-Definiton und Implementierung ist der IDM in der Lage, das Laden der Implementierung (also des Moduls) nur bei Bedarf durchzuführen.

Durch use kann diese Schnittstellen-Definition auch direkt aus dem Modul, also der Implementierung erfolgen. Aus oben genannten Grund macht es aber dennoch Sinn Interface-Dateien zu nutzen.

Für die Auslieferung einer IDM-Anwendung an den Endkunden bedarf es einer Binärfassung der Dialoge und Module.

Grundsätzlich können Interface- und Binärdateien auf dem herkömmlichen Weg über die Aktionen -writeexport und -writebin erzeugt wegen. Solange diese Dateien mit der richtigen Dateiendung an der richtigen Stelle im Suchpfad stehen, hat die Anweisung use damit kein Problem.

Für modularisierte Dialoge die use verwenden gibt es viel einfachere Aktionen, um alle Interface- und Binärdateien in einem Schritt zu erzeugen.

-compile

Erneuert alle Interface- und Binärdateien für geänderte Module und Dialoge.

-recompile

Erzeugt alle Interface- und Binärdateien neu.

-cleancompile

Löscht alle Interface- und Binärdateien.

Dazu muss der Dialog fehlerlos geladen werden können. Erzeugt werden Interface- und Binärdateien nur für den angegebenen Dialog und alle per use geladenen Module. Für Module, die per import angezogen werden, wird keine Interface- und Binärdatei erzeugt!

Die zu ladenden Modul- und Dialogdateien müssen als Quelltext vorliegen. Bei einem Ladefehler werden keine Dateien erzeugt.

Beispiel

!! file: Main.dlg

dialog MainDlg

use Models;
use Base.Fonts;

MWiMain WiMain {
  .font Fonts.FnBig;
}
!! file: Models.mod

module ModModels

export window MWiMain {
  on close {
    exit();
  }
}
!! file: Base/Fonts.mod

module ModFonts

export font FnBig "24.Arial";

Über folgendes Kommando kann man in einem Schritt alle Interface- und Binärdateien erstellen:

pidm -compile Main

Nun sollten die folgenden Dateien parallel zu den Quelltext-Dateien stehen:

Main.bin
Models.bin
Models.if
Base/Fonts.bin
Base/Fonts.if

Fügt man nun in der Datei Base/Fonts.mod noch die Zeile export font FnSmall… hinzu, so aktualisiert man einfach mit folgendem Kommando:

pidm -compile Main

Was zum erneuten Schreiben der folgenden Dateien führt:

Base/Fonts.bin
Base/Fonts.if

Die anderen Interface- und Binärdateien werden nicht neu geschrieben, da das Dateidatum dieser Dateien neuer ist als das der entsprechenden Quelldatei.

Möchte man auf jeden Fall alle Interface- und Binärdateien neu erzeugen lassen, so geht dies über:

pidm -recompile Main

Möchte man alle Interface- und Binärdateien löschen, so geht dies über:

pidm -cleancompile Main

Um die Interface- und Binärdateien in ein anderes Verzeichnis hinein zu erzeugen, dienen die Optionen -ifdir <Verzeichnispfad> und -bindir <Verzeichnispfad>.