home *** CD-ROM | disk | FTP | other *** search
- CS 5.6 - Compiler Shell - (c) Kai Uwe Rommel - Sep 30 1990
-
-
- 1. Einleitung
- -------------
-
- CS ist eine "shell" für die folgenden Programmierwerkzeuge
- von Microsoft:
-
- - Macro Assembler (ab 5.00)
- - C Compiler (ab 5.00, 6.00 wird unterstützt)
- - Pascal Compiler (ab 4.00)
- - FORTRAN Compiler (ab 4.00)
- - Windows Resource Compiler (ab 2.00)
- - OS/2 Resource Compiler
- - LINK (ab 5.00)
- - ILINK
- - BIND
- - EXE2BIN
- - CVPACK
- - LIB (ab 3.08)
- - CREF
- - PWBRMAKE
-
- Außerdem werden die folgenden Programme unterstützt:
-
- - FLEX Scanner Generator (ab 2.3)
- - GNU BISON Parser Generator (ab 1.03)
-
-
- CS nimmt dem Benutzer die Eingabe ständig benutzter Optionen und
- Kommandos ab, sucht selbständig Dateien in festgelegten Verzeichnissen
- und führt Compilerläufe nach einer "MAKE"-Strategie durch.
-
- CS ist eine Family-Application und läuft sowohl unter DOS als auch
- unter OS/2 (Real und Protected Mode).
-
- Es können folgende Ausgabedateien erzeugt werden:
-
- a) Real Mode Programme
- - DOS EXE-Format
- - DOS COM-Format
- - DOS Windows EXE-Format (auch DLL's)
-
- b) Protected Mode Programme
- - OS/2 EXE-Format (auch DLL's und Presentation Manager)
- - Bound EXE-Format (Family-Applications für OS/2 und DOS bzw. DOS box)
- (Das Erzeugen von Presentation-Manager-Programmen unterscheidet sich von
- Standard-OS/2-Programmen nur durch Verwendung einer anderen Import-Library,
- OS2.LIB, anstelle von DOSCALLS.LIB.)
-
- c) Linker Maps
-
- d) Listings
-
- e) Object Libraries
-
-
- 2. Syntax
- ---------
-
- Aufruf: CS argument*
-
- argument = globalopt | fileset
- fileset = filespec | '(' item* ')'
- item = localopt | filespec | '(' special ')'
- special = genopt | filespec
- filespec = filename | filename '{' include* '}'
- include = filename
-
- Wobei: globalopt ε { -? -H -Am -Ff -Le -Sn -Oid -Q -I -X -P
- -C -L -E -N -B -M -LS -SB -K -NS -NF }
-
- m = Modell-Bezeichner T, S, M, C, L, H oder MT
- f = Float-Typ E, 7, A oder D
- e = Programtyp-Bezeichner R, C, P, PM, B, W oder L
- id = Name der TOOLS.INI-Sektion mit den Compiler-Optionen
- n = Stackgröße in Bytes (dezimal oder hex mit Präfix 0x)
-
- filename = beliebiger DOS-Dateiname, alle Namen in einem Fileset in ()
- müssen dieselbe Extension haben (C, PAS, FOR oder ASM)
- localopt = beliebige Option für den Compiler, der zu der Extension
- der Dateien in dem betreffenden Fileset gehört
- genopt = any parser or scanner generator option
-
- Eingabedateien können die Typen C, PAS, FOR, ASM, L, Y, OBJ, LIB oder RC
- haben bzw. DEF (Linkerinformationen), BAD (Informationen für BIND über
- an BadDynLink zu bindende Namen) oder CS (CS Projektdatei).
- Das '(' special ')'Konstrukt ist nur für Dateien der Typen L und Y erlaubt.
- Eine Datei mit Typ MDT kann angegeben werden, für die zum inkrementellen
- Übersetzen notwendigen Informationen des QCC von C 6.00 (siehe -Q).
-
- Um zusätzliche API-Libraries für BIND statt für LINK zu spezifizieren,
- muß ein Ausrufezeichen unmittelbar an den Namen der Library angehängt
- werden um sie von LINK-Libraries zu unterscheiden. Nach diesen BIND-
- Libraries wird im PLIB-Pfad (siehe 5.1) gesucht.
-
- Sollen für eine oder mehrere Quelldateien spezielle Optionen an den
- betreffenden Compiler übergeben werden, so können diese zusammen mit
- den jeweiligen Dateien in runde Klammern eingeschlossen werden. Für
- jeden in () eingeschlossenen Satz Quelldateien wird ein eigener
- Compilerlauf mit den angegebenen lokalen Optionen durchgeführt.
- Für Quelldateien für FLEX und BISON, können sowohl optionen für diese
- Programme als auch Optionen für den C-Compiler angegeben werden (siehe
- unten).
-
- Zur Unterstützung der MAKE-Strategie kann zu jeder Quelldatei ein Satz
- Dateien angegeben werden, von denen die Quelldatei abhängig ist (z.B.
- Include-Dateien). Dieser Satz Dateien muß in {} eingeschlossen werden
- und der Quelldatei unmittelbar folgen. Diese Dateien werden NUR für
- die Durchführung der MAKE-Strategie berücksichtigt und sonst in
- keinster Weise verwendet.
-
- Werden in der Kommandozeile Dateien des Typs EXE, SYS, DLL, COM, MAP, BSC oder
- LST angegeben, so werden dadurch die Namen der Ausgabedateien bestimmt und
- (EXE/DLL/COM) ihr Typ festgelegt bzw. (MAP/LST/BSC) ihre Produktion ausgelöst.
- DLL und SYS sind Synonyme für EXE. Soll ein DOS-Gerätetreiber im Binärformat
- erzeugt werden, so ist -LC zusätzlich zur Endung SYS anzugeben. DOS kann aber
- auch Gerätetreiber im EXE-Format laden.
-
-
- Beispiel:
- CS -lp haupt.c{def.h} prog.exe (mod1.c mod2.c -Gt) mod3.asm mod4.c mod5.pas
-
- (Falls dies etwas kryptisch erscheint, so verdeutlicht das den Nutzen
- von CS- Projektdateien, siehe später folgende Projektdatei-Version
- dieses Beispiels.)
-
- Wildcard-Expansion wird unterstützt, jedoch ist zu beachten, daß Namen,
- die Wildcards enthalten, links und rechts durch Leerzeichen begrenzt
- werden müssen.
-
- Falsch: CS haupt.c (mod*.c -G2)
- Richtig: CS haupt.c ( mod*.c -G2)
-
- Für BISON und FLEX ist es oft erforderlich, sowohl Optionen für diese
- Programmgeneratoren als auch für den C-Compiler anzugeben, der die
- generierten C-Programme übersetzt. Für diesen Zweck können Optionen für die
- Parsergeneratoren in einem zweiten Klammerniveau () mit dem Dateinamen
- eingschlossen werden.
-
- Beispiel: CS -lp haupt.c (-W1 (-d gramm.y))
-
- Die Option -d wird an BISON übergeben, während die Option -W1 dem C-Compiler
- übergeben wird, wenn gramm.c übersetzt wird. Dies ist aber kein wirklich
- geschachteltes Klammerniveau, lediglich ein Hilfsmittel zur Trennung der
- Optionen. Deshalb werden im folgenden Beispiel:
-
- CS -lp haupt.c (-W1 (-d gramm1.y) (-v gramm2.y))
-
- die Optionen -d und -v BEIDE an BISON übergeben, und zwar für JEDE der beiden
- Quelldateien. Die korrekte Syntax für dieses Beispiel wäre:
-
- CS -lp haupt.c (-W1 (-d gramm1.y)) (-W1 (-v gramm2.y))
-
- CS ruft FLEX und BISON mit den nötigen Optionen auf, um deren Ausgabedateien
- mit den gleichen Namen wie die Eingabedateien zu erzeugen. Die generierten
- C-Programme werden im gleichen Verzeichnis abgelegt, in dem sich die Eingabe-
- Dateien befinden, NICHT im OUTPUT-Verzeichnis (siehe 5.1).
- Deshalb dürfen die Optionen -t von FLEX und -o von BISON nicht verwendet
- werden; sie werden stets von CS benutzt.
-
-
- 3. CS-Projektdateien
- --------------------
-
- Trifft CS in der Kommandozeile auf eine Datei mit dem Typ .CS, so wird
- die Kommandozeile nicht weiter ausgewertet, sondern weitere Optionen
- oder Dateinamen werden aus der betreffenden Datei gelesen. Die
- CS-Dateien (= Projektdateien) können beliebig viele Zeilen enthalten.
-
- Der Dateityp .CS kann bei Projektdateien auch weggelassen werden, d.h.
- es reicht "CS name" falls name.CS im SOURCE-Pfad oder im aktuellen
- Verzeichnis existiert. Projektdateien sind die EINZIGEN Dateien, deren
- Typ in den CS-Argumenten weggelassen werden kann.
-
- Für den Inhalt der CS-Dateien gilt dieselbe Syntax wie für die
- Kommandozeilen- parameter, jedoch kann die Struktur eines Projektes auf
- mehreren Zeilen über- sichtlicher festgehalten werden. Kommentarzeilen
- müssen mit ; oder # beginnen.
-
- CS-Projektdateien sind in erster Linie für umfangreichere Projekte
- gedacht, bei denen () und/oder {} genutzt werden. Dann hat die
- Projektdatei die Funktion eines MAKEfiles und erspart Tipparbeit.
- CS-Projektdateien sind zudem weniger aufwendig zu schreiben und weniger
- fehleranfällig als MAKEfiles.
-
- Die CS-Datei für das obige Beispiel könnte etwa so aussehen:
-
- ; Projekt: xyz
- ; Stand: 1.4.1989
- ;
- ; Hauptmodul
- haupt.c {def.h}
- ;
- ; Untermodule mit Zusatz-Optionen
- (mod1.c mod2.c -Gt)
- ;
- ; Weitere Untermodule
- mod3.asm
- mod4.c
- mod5.pas
- ;
- ; Ausgabe-Name für BOUND-Programm
- prog.exe -lb
-
- Falls an CS keine Parameter übergeben werden, oder die Parameter nur
- Optionen bzw. zumindest keine Eingabedateien der Typen C, PAS, FOR, ASM
- oder OBJ enthalten, so sucht CS im aktuellen Verzeichnis nach der Datei
- PROJECT.CS. Wird diese Datei gefunden, so wird sie gelesen, als ob sie
- als letzter Parameter an CS übergeben worden wäre. Das heißt, daß
- Optionen wie z.B. -OCV die Anweisungen in PROJECT.CS beeinflussen
- können. PROJECT.CS hat also eine ähnliche Funktione wie "makefile" für
- das Programm Make aus UNIX o.ä. Tools.
-
-
- 4. Optionen
- -----------
-
- -Am Legt das Speichermodell für C und MASM fest, wobei für MASM das
- Modell in Form eines Define-Symbols mit dem Namen "model"
- übergeben wird, das noch in einem Statement der Art
- "% .MODEL model"
- ausgewertet werden muß. Für m sind T, S, M, C, L, H und MT gültig.
- MT bezeichnet ein Custom-Modell zur Multithread-Programmierung
- unter OS/2 (mit LLIBCMT.LIB). T (TINY) wird nur von C 6.00 erkannt.
-
- -Le Bestimmt das Ausgabeformat des Linkers (e = R, C, W, P, PM, B oder L).
- -LR -> Real-Mode-EXE für DOS
- -LC -> Real-Mode-COM für DOS
- -LW -> Real-Mode-Windows-EXE
- -LP -> Protected-Mode-EXE für OS/2 (ohne Presentation Manager)
- -LPM -> Protected-Mode-EXE für OS/2 (für Presentation Manager)
- -LB -> Bound-EXE
- -LL -> es wird nicht gelinkt sondern eine Library mit LIB erzeugt
-
- -Ff bestimmt den Typ der Fließkommaarithmetik
- -FE Emulator-Fließkommaarithmetik Dies bestimmt
- -F7 Fließkommaarithmetik mit Koprozessor auch den Typ der
- -FA alternative Fließkommaarithmetik Standardlibrary mit !
- -FD Dezimalarithmetik (nur für Pascal wirksam)
-
- -Oid Mit id werden die Compileroptionen eingestellt. Dazu wird in
- TOOLS.INI nach eine Sektion mit dem Namen [CS-id] gesucht. Aus
- dieser Sektion werden die Inhalte für die Environment-Variablen
- CL, PL, FL, MASM und LINK aus den gleichnamigen Einträgen gelesen.
- Die Länge von id ist auf max. 15 Zeichen beschränkt.
-
- -Sn Definiert die Stackgröße, n kann dezimal oder 0xhex angegeben werden.
-
- -C Compile only
-
- -L Link only
-
- -E Echo der Kommandos, bevor sie ausgeführt werden
-
- -N Keine Ausführung der Kommandos, nur Anzeige
-
- -K Protokoll von allen Programm-Ausgaben in einem LOGfile anlegen
- (siehe unten).
-
- -B Abschalten der MAKE-Strategie
-
- -X Linken ohne Standard-Libraries
-
- -Q Inkrementelles Übersetzen (nur C 6.00 und höher)
-
- -I Inkrementelles Linken
-
- -P Aufruf von CVPACK, falls für CodeView gelinkt wird
-
- -M Löst die Erzeugung einer Linker-Map (bei -LB auch Binder-Map) aus.
-
- -LS Löst die Erzeugung eines Übersetzungs-Listings aus
-
- -SB Erzeugung einer Source-Browser-Datenbank für PWB (Dateityp BSC).
- Dies wird zur Zeit nur von C 6.00 unterstützt, jedoch keiner anderen
- Sprache. Die SBR-Dateien aller C-Module werden im Ausgabe-Verzeichnis
- erzeugt, für die BSC-Datei können Name und Pfad optional angegeben
- werden.
-
- -NF Verwendung vollständiger Pfadnamen der Quelltexte beim Übersetzen
- (Sinnvoll bei Verwendung von CodeView, dieser findet dann die
- Quelltexte auch dann, wenn sie nicht im aktuellen Verzeichnis stehen)
-
- -NS Verwendung einfacher Dateinamen, falls die Quelldateien im aktuellen
- Verzeichnis stehen
-
-
- 5. TOOLS.INI
- ------------
-
- Die für CS erforderlichen Informationen über die konkrete Umbgebung
- müssen in der Datei TOOLS.INI definiert werden. Diese Datei muß über
- die Environment- Variablen INIT oder PATH auffindbar sein. Sie wird
- auch vom Microsoft Editor und dem Microsoft Make Dienstprogramm
- verwendet, die diese Datei über die Environment-Variable INIT suchen.
-
-
- 5.1. Sektion [CS]
- -----------------
-
- MODEL=<modell>
-
- Mögliche Werte für <modell> sind die Worte TINY, SMALL, MEDIUM, COMPACT,
- LARGE, HUGE oder MTHREAD.
-
- EXETYPE=<typ>
- Mögliche Werte für <typ> sind DEFAULT, DOS, COM, OS2, OS2PM, BOUND,
- WINDOWS oder LIBRARY. Bei DEFAULT wird abhängig vom aktuellen Maschinenmodus
- automatisch ein Real- oder Protected-Mode-EXE-Programm erzeugt.
- Bei LIBRARY werden alle Objektdateien mit LIB in eine Library geschrieben.
-
- FLOAT=<typ>
- Mögliche Werte für die Fließkommaarithmetik sind EMULATOR, 80X87,
- ALTERNATE oder DECIMAL.
-
- OPTIONS=<id>
- ID der Sektion mit den Default-Compileroptionen (siehe auch bei
- Kommandozeilen- option -Oid). Die Länge von <id> ist auf max. 15 Zeichen
- beschränkt.
-
- STACK=<größe>
- Legt die Standard-Stackgröße fest.
-
- ILINK=<Optionen>
- Damit werden die Optionen für LINK festgelegt, mit denen ein .EXE für
- ILINK vorbereitet wird (sollte /PADC:x und /PADD:x enthalten, nicht aber
- /INC).
-
- NAMES=FULL oder NAMES=SHORT
- Bei FULL werden beim Übersetzen vollständige Pfadnamen der Quelltexte
- verwendet. (Sinnvoll bei Verwendung von CodeView, dieser findet dann die
- Quelltexte auch dann, wenn sie nicht im aktuellen Verzeichnis stehen.)
- Bei SHORT werden einfache Dateinamen verwendet, falls die Quelldateien im
- aktuellen Verzeichnis stehen.
-
- BUILD=NO oder BUILD=YES
- Mit Build=Yes wird die MAKE-Strategie abgschaltet. Normalerweise sollte
- mit BUIL=NO gearbeitet werden.
-
- RAMDISK=<path>
- Wird für <path> ein nichtleerer Pfadname angegeben (der in die RAMDISK
- verweisen sollte), so werden vor dem Start eines Compilers die zu der
- betreffenden Sprache gehörigen Include-Files dorthin kopiert, falls sie
- dort noch nicht existieren. Siehe 4.3.
-
- SOURCE=<pathlist>
- Damit können Verzeichnisse angegeben werden, die automatisch nach
- Quelldateien durchsucht werden, wenn CS sie nicht im aktuellen
- Verzeichnis findet. SOURCE gilt für Dateien mit den Typen ASM, C, PAS, FOR,
- DEF, BAD und CS.
-
- OBJ=<pathlist>
- Dto. für Objektdateien.
-
- OUTPUT=<path>
- Spezifiziert das Ausgabeverzeichnis für alle mit CS erzeugten Dateien.
- <path> sollte nach Möglichkeit in die Ramdisk zeigen. Ausgabedateien
- (EXE-, MAP-Files) können aber auch explizit Laufwerksbezeichnungen oder
- Pfadnamen vorangestellt werden, damit wird OUTPUT für die betreffende
- Datei dann ignoriert.
-
- INCLUDE=<pathlist>
- TMP=<path>
- Diese Einträge spezifizieren die Inhalte der gleichnamigen Environment-
- Variablen für die Compiler und den Linker und werden vor dem Aufruf der
- Programme entsprechend gesetzt.
-
- RLIB=<pathlist>
- PLIB=<pathlist>
- WLIB=<pathlist>
- Diese Einträge spezifizieren den Inhalt der Environmentvariable LIB
- beim Linken von Real-Mode-Programmen (DOS-EXE oder COM), Protected-
- Mode-Programmen (OS2-EXE oder Bound-Programme) bzw. Windows-Programmen.
-
- In den Variablen RAMDISK, SOURCE, OBJ, OUTPUT, INCLUDE, TMP, RLIB, PLIB und
- WLIB kann auf Environment-Variablen bezug genommen werden, indem deren Namen
- mit % eingeschlossen werden (wie in Batchfiles).
- Beispiel: INCLUDE=%TMP%\INCLUDE;D:\LIB\INCLUDE;C:\MS\INCLUDE
- Hier wird für %TMP% der Wert der Environment-Variablen TMP eingesetzt.
-
-
- 5.2. Sektionen [CS-id]
- ----------------------
-
- Diese Sektionen enthalten die Einträge mit den gewünschten
- Standard- optionen der gleichnamigen Programme.
-
- Beispiel:
-
- [CS-STD]
- CL=-W3 -Zdep1 -J -G2s -Oxn
- PL=-w3 -Zdz
- FL=-W1 -Zd -FPi -G2s -Ox
- MASM=-W2 -Ml -X -Zd
- LINK=/BAT /NOIG /NOE
-
-
- 5.3. Sektionen [CS+ASM], [CS+C], [CS+FOR] und [CS+PAS]
- ------------------------------------------------------
-
- In diesen Sektionen wird festgelegt welche Include-Files zu welcher
- Sprache in das RAMDISK-Verzeichnis kopiert werden und wo sie zu
- finden sind.
-
- Die beliebig vielen Einträge je Sektion haben das Format:
-
- FLAGFILE=SOURCE
-
- wobei FLAGFILE den Namen einer Datei enthält, deren Existenz vor dem
- Start des entsprechenden Compilers geprüft wird. Existiert diese Datei
- nicht im RAMDISK-Verzeichnis, so werden die mit SOURCE angegebenen
- Dateien dorthin kopiert. SOURCE muß einen vollständigen Pfad und ein
- Dateimuster enthalten.
-
- Beispiel:
-
- [CS+ASM]
- DOS.INC=C:\INCLUDE\*.INC
- OS2.INC=C:\INCLUDE\OS2\*.INC
- MACROS.INC=D:\INCLUDE\*.INC
-
-
- 6. Sonstige Eigenschaften
- -------------------------
-
- Falls der Linker einen Fehler meldet, so bleibt dessen Standard-Eingabe
- (Response-Datei) unter dem Namen CS.INP im OUTPUT-Verzeichnis erhalten.
- Mit Hilfe dieser Datei kann festgestellt werden, ob CS die richtigen
- Objekt- Dateien und Libraries zum Linken angegeben hat.
-
- Wenn der zu den Compilern bzw. zum Assembler gelieferte
- Segmented-Executable Linker verwendet wird, so sollte zur Erzeugung von
- Windows-Programmen das Statement "EXETYPE WINDOWS" in die DEF-Datei
- aufgenommen werden, da die Vor- einstellung dieses Linkers "EXETYPE
- OS2" ist. Dies ist dann notwendig, wenn das Programm keine
- Resource-Datei benötigt, da sonst der Typ vom Resource Compiler
- berichtigt wird.
-
- Die Standard-Libraries von Microsoft C, Pascal und FORTRAN müssen
- explizit den Mode-Suffix im Namen haben, wie z.B. CLIBCER.LIB,
- CLIBCEP.LIB und CLIBCEW.LIB statt CLIBCE.LIB, LIBPASER.LIB statt
- LIBPASE.LIB und z.B. MLIBFER.LIB statt MLIBFORE.LIB.
-
- Obgleich CS den SOURCE Pfad nach Eingabedateien durchsucht, ist es
- empfehlenswert, das aktuelle Verzeichnis auf die Quelltexte
- einzustellen, da die Compiler nach Include-Dateien natürlich NICHT im
- SOURCE Pfad suchen.
-
- Beim Windows Resource Compiler ist dies sogar erforderlich, da dieser
- keine vollständigen Pfadnamen akzeptiert. Die RES-Datei des
- Resource-Compilers wird entgegen den sonstigen Regeln nicht im OUTPUT
- Verzeichnis abgelegt sondern dort, wo auch die RC-Datei steht.
-
- Windows und OS/2 verwenden unterschiedliche Resource Compiler. Stellen
- Sie sicher, daß RC für Windows unter DOS über PATH gefunden werden
- kann und RC für OS/2 über den OS/2-PATH gefunden werden kann.
-
-
- 7. Automatische Dateinamenswahl
- -------------------------------
-
- Werden keine Namen für die Ausgabedateien (EXE, MAP) angegeben, so
- werden sie aus dem Namen der ersten übergebenen Datei gebildet.
-
- Wird ein Protected-Mode- oder Bound-EXE-Programm erzeugt und ist keine
- DEF- bzw. keine BAD-Datei angegeben, so sucht CS immer nach einer DEF-
- bzw. BAD- Datei mit dem gleichen Namen und Pfad wie ihn die erste auf
- der Kommandozeile oder in der CS-Datei angegebene Datei hat und
- übergibt diese Dateien automatisch an LINK bzw. BIND, wenn sie
- existieren.
-
- Wird ein Windows-Programm erzeugt, so werden auf die gleiche Weise eine
- DEF- und eine RC-Datei gesucht und mit verarbeitet.
-
- Um Programme für den OS/2 Presentation Manager zu erzeugen, wird mit
- -LPM wie für normale OS/2-Programme übersetzt, die DEF- und RC-Dateien
- werden wieder automatisch gesucht und mit verarbeitet. Durch -LPM wird
- statt DOSCALLS.LIB nun mit OS2.LIB gelinkt.
-
- Weichen die Namen von RC-, DEF- und ggf. BAD-Datei vom Namen der ersten
- Quelldatei ab, so sind sie explizit anzugeben.
-
- Dies vereinfacht die Übersetzung von kleineren Single-Source-
- Programmen, für die dann keine CS-Datei angelegt werden muß, wenn die
- Zusatzdateien (DEF, BAD bzw. RC) den gleichen Namen haben wie die
- Quelldatei (aber natürlich den richtigen Typ).
-
-
- 8. Log file
- -----------
-
- Häufig ist es nützlich, ein Protokoll aller Ausgaben von CS und den
- aufgerufenen Compilern, dem Linker usw. in einer Datei zu haben.
- Dies würde zum Beispiel erlauben, einen großen Übersetzungsvorgang zu
- starten und dann zum Mittagessen zu gehen und hinterher die Warnungen,
- Fehlermeldungen usw. zu lesen ...
- Mit der Option -K wird ein Protokoll in eine Datei mit dem gleichen Namen
- und im gleichen Verzeichnis geschrieben wie das zu erzeugende Programm,
- aber mit Dateityp LOG. Alle Ausgaben von aufgerufenen Programmen und von
- CS selbst (z.B. durch Option -E) werden in diese Protokolldatei dupliziert.
- Unter DOS hat dies aber den Nachteil, daß die Ausgaben jedes Übersetzungs-
- schrittes erst auf dem Bildschirm erscheinen, wenn der Schritt beendet
- ist und bevor der nächste beginnt. Unter OS/2 werden bei Benutzung der
- Option -K alle Programme über Pipes aufgerufen, die zum Bildschirm und
- in die Protokolldatei aufgeteilt werden. Dies ermöglicht sofortige
- (synchrone) Bildschirmausgabe und gleichzeitig eine Protokolldatei.
- Eine Protokolldatei ist insbesondere zum Beispiel dann interessant, wenn
- der Warning-Level eines Compilers gewechselt wird. Das kann Hunderte von
- Warnungen bei älteren C-Programmen zur Folge haben, die auf diese Weise
- in eine Datei geschrieben werden können und später mit einem Editor
- bearbeitet werden können, ohne daß man zur Übersetzungszeit (z.B. bei sehr
- umfangreichen Programmen) "im Dunkeln sitzt", sondern den Ablauf verfolgen
- kann.
-
-
- 9. DLL's
- --------
-
- DLL's werden meist mit Speichermodellen wie -Asnu, -Asnw oder -Alfw
- usw. erzeugt. Laut C Compiler User's Manual sind solche Modelle auch
- mit einem Standardmodell und zusätzlich -Au oder -Aw erzeugbar. Es
- sollte daher das entsprechende Standardmodell global an CS übergeben
- werden (siehe unten) und -Aw oder -Au mit den betreffenden Quelldateien
- in runde Klammern eingeschlossen werden. Folgende Standardmodelle
- entsprechen den speziellen Speichermodellen:
-
- -Asnw --> -AS -Aw dto. für -Au
- -Asfw --> -AC -Aw
- -Alnw --> -AM -Aw
- -Alfw --> -AL -Aw
-
- Um z.B. den Compileraufruf "CL -Asnw -G2s graflib.c" zu erreichen, muß
- "CS -AS (-Aw -G2s graflib.c)" verwendet werden (bzw. sinngemäße
- CS-Datei).
-
- Für das Linken von DLL's ist u.U. die Option -X sinnvoll, wenn keine
- Standardbibliotheken mitgelinkt werden sollen.
-
- Für DLL's sind diverse Endungen üblich, für Windows wird meist .EXE verwendet,
- für OS/2 meist .DLL. CS erlaubt die Angabe von .DLL alternativ zu .EXE.
- Um andere Endungen zu erzeugen, muß die .EXE-Datei eben umbenannt werden.
-
- In der DEF-Datei darf natürlich das LIBRARY-Statement statt des
- NAME-Statements nicht fehlen.
-
-
- 10. Exit-Codes
- -------------
-
- CS gibt bei Beendigung folgende Codes an den Aufrufer zurück:
-
- 0 - erfolgreicher Ablauf
- 1 - es war nichts zu tun
- 2 - ein aufgerufenes Programm hat einen Fehler zurückgemeldet
- (Compiler, Assembler, Linker ...)
- 3 - Syntaxfehler in der Kommandozeile oder einer Projektdatei (.CS)
- 4 - Konfigurationsfehler in TOOLS.INI
- 5 - eine benötigte Eingabedatei ist nicht vorhanden
- 6 - Ablauffehler von CS
- (Speicher nicht ausreichend, E/A-Fehler ... )
-
- 256 - Abbruch durch den Benutzer
-
-
- 11. Einschränkungen
- ------------------
-
- - seit dieser Version keine mehr :-)
-
- Mir fallen keine weiteren Features mehr ein, ich bin aber für
- Anregungen dankbar ...
-