Nachdem das Skript erfolgreich getestet ist, kann nun ein eigenständiges Programm daraus erstellt werden. Dazu ist wieder die Shell bezieungsweise Eingabeaufforderung notwendig. Der Aufruf ist unter Windows und Linux grundsätzlich gleich. Unter Windows ist allerdings
»tclkitsh
«
zu verwenden. Im folgenden sollen die Programmaufrufe unter Windows als Beispiele dienen, weil der Programmierer hier zwischen Text- und GUI-Modus unterscheiden muss. Verwendet er dagegen Linux, heißt es immer nur
»tclkit
«
. Um die Eingabe langer Pfadnamen zu vermeiden, werden das Programm
»tclkit.exe
«
und die Datei
»sdx.kit
«
in das gleiche Verzeichnis wie das Skript
»hello.tcl
«
kopiert. Der Aufruf
tclkitsh sdx.kit qwrap hello.tcl -runtime tclkit.exe
erzeugt die Datei
»hello
«
, die nach dem Umbenennen in
»hello.exe
«
startbar ist. Um jetzt unter Windows ein Programm für Linux zu erzeugen, muss nur das Tclkit für Linux (
»tclkit-8.5.9-linux-ix86
«
) in das gleiche Verzeichnis kopiert werden. Durch den Aufruf von
tclkitsh sdx.kit qwrap hello.tcl -runtime tclkit-8.5.9-linux-ix86
entsteht die Datei
»hello
«
, die jetzt ein ausführbares Programm für Linux ist.
Analog ist dies auch unter Linux für Windows möglich. So lassen sich Programme für verschiedene Rechner Plattformen aus einem Quelltext erzeugen, da nur das entsprechende Tclkit der Ziel-Plattform mit dem Parameter
»-runtime
«
bei der Erzeugung anzugeben ist. Es gilt aber zu beachten, dass es die Verwendung plattformspezifischer Packages ( zum Beispiel
»twapi
«
oder
»registry
«
für Windows) unmöglich machen kann, das Programm zu portieren.
Der Parameter
»qwrap
«
(quick wrap) eignet sich nur, um aus einer einzigen Quell-Datei ein Starpack/Starkit zu erstellen. Kommen weitere Packages oder mehrere Quell-Dateien zum Zug, so ist der Parameter
»wrap
«
zu verwenden. Er setzt voraus, dass der Quellcode und die Packages in einer speziellen Verzeichnisstruktur vorliegen, was das folgende Beispiel erläutert.
Dieses Beispiel liefert einen einfachen Text-Editor. Für das Hauptfenster kommt das Package BWidget zum Einsatz. Die Datei aus
Listing 1
mit dem Namen
»editor.tcl
«
erzeugt das Fenster: Sobald man sie startet, erscheint ein Fenster, das als rudimentärer Editor fungieren kann.
Listing 1
Ein Editor
Um daraus ein eigenständiges Programm zu erstellen, erzeugt der folgende Aufruf erst mit dem Parameter
»qwrap
«
ein Starkit:
tclkitsh sdx.kit qwrap editor.tcl
Dieses Starkit (
»editor.kit
«
) wird mit dem Parameter
»unwrap
«
wieder in den Quellcode zurückgewandelt. Bei der Rückwandlung entsteht eine Verzeichnisstruktur (
»editor.vfs
«
), die auch der eigentliche Inhalt des Starkits ist (
Abbildung 2
).
tclkitsh sdx.kit unwrap editor.kit
Im
»lib
«
-Verzeichnis eines Starkits müssen alle benötigten Packages zu finden sein. Da in unserem Beispiel nur das Package BWidget verwendet wurde, wird es nach
»edidor.vfs/lib
«
kopiert. Es könnten jetzt auch noch Korrekturen an der Datei
»editor.tcl
«
vorgenommen oder weitere Dateien hinzugefügt werden (
Tabelle 1
).
Tabelle 1
Hilfreiche Packages
Name |
Funktion |
---|---|
twapi |
Zugriffsfunktionen für Windows-API |
tablelist |
Mehrspaltiges Tabellen-Widget mit vielfältigen Sonderfunktionen |
BWidget |
Kombinierte Widgets |
cwind |
Simulation von Tastatur und Mauseingaben unter Windows |
winico |
Anzeige von Icons in der Windows-Taskbar |
snack |
Sound-Funktionen |
expect |
Automatisierung von komplexeren Komandozeilen-Programmen, zum Beispiel Zugänge mit Einmalpassworten |
Zum Abschluss erzeugt man das Programm mit dem Befehl
tclkitsh sdx.kit wrap editor.exe -runtime tclkit.exe
Es entsteht direkt das Programm
»editor.exe
«
. Mit dem Befehl
tclkitsh sdx.kit unwrap editor.exe
lässt sich das Starpack jederzeit wieder in eine Verzeichnisstruktur wandeln, die einige Dateien und Packages mehr enthält, da das
»tclkit.exe
«
selbst ein Starpack ist, und die dort enthaltenen Dateien integriert werden.