home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Der Mediaplex Sampler - Die 6 von Plex
/
6_v_plex.zip
/
6_v_plex
/
DISK6
/
OS_19
/
CS69.ZIP
/
GERMAN.DOC
< prev
next >
Wrap
Text File
|
1992-05-21
|
24KB
|
613 lines
CS 6.8 - Compiler Shell - (c) Kai Uwe Rommel - Jan 18 1992
1. Einleitung
-------------
CS ist eine "shell" für die folgenden Programmierwerkzeuge
von Microsoft:
- Macro Assembler (ab 5.00, 6.00 wird unterstützt)
- C Compiler (ab 5.00, 6.00 wird unterstützt)
- 386 C Compiler
- Pascal Compiler (ab 4.00)
- FORTRAN Compiler (ab 4.00)
- Windows Resource Compiler (ab 2.00)
- Whitewater Ressource Toolkit für Windows
- OS/2 Resource Compiler
- LINK (ab 5.00), LINK386
- 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 Ausgabedateien für folgende Umgebungen erzeugt werden:
- DOS (EXE-Format)
- DOS (COM-Format)
- Windows oder WLO (Windows Libraries für OS/2)
- Mirrors (Windows-Emulation für OS/2)
- OS/2 (16- und 32-bit)
- OS/2 Presentation Manager (16- und 32-bit)
- Family-Applications für OS/2 und DOS bzw. DOS box
Für Windows/WLO, Mirrors, OS/2 und OS/2 PM können auch DLL's erzeugt
werden.
Weitere Ausgabedateien:
- Linker Maps
- Listings
- 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 -F -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 CS.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, RES
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).
Dateien mit Typ LOG oder BAT/CMD legen die Namen von Dateien für das
Bildschirmprotokoll bzw. die zu generierende Batch-Datei fest.
Eine Datei mit Typ BSC legt die zu erzeugende PWB-Browse-Datenbank fest.
Wird ein Verzeichnis als Parameter verwendet, so wird es als Ausgabe-
Verzeichnis verwendet. Es muß als erstes nicht-Options-Argument
angegeben werden.
Um zusätzliche API-Libraries/Objektdateien für BIND statt für LINK zu
spezifizieren, muß ein Ausrufezeichen unmittelbar an den Namen der Library
bzw. der Objektdatei angehängt werden um sie von LINK-Libraries/Objektdateien
zu unterscheiden. Nach BIND-Libraries wird im PLIB-Pfad, nach BIND-Objekt-
Dateien im OBJ-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. Wildcards werden nicht in Projektdateien unterstützt.
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, MT und 3 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.
3 bezeichnet das 386 Small Model und selektiert den 386-Compiler
und Linker etc.
-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 -> Windows-EXE für DOS-Windows oder OS/2-WLO
-LM -> Mirrors-EXE für OS/2
-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
-FCE Emulator-Fließkommaarithmetik-Calls Standardlibrary mit !
-FC7 Fließkommaarithmetik mit Koprozessor-Calls
-FA alternative Fließkommaarithmetik
-FD Dezimalarithmetik (nur für Pascal wirksam)
-Oid Mit id werden die Compileroptionen eingestellt. Dazu wird in
CS.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
-G Keine Ausführung der Kommandos, aber Batch-Datei erzeugen
-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
-F Normales (volles) Übersetzen und 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 und MASM 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. CS.INI
------------
Die für CS erforderlichen Informationen über die konkrete Umbgebung
müssen in der Datei CS.INI definiert werden. Diese Datei muß über
die Environment- Variablen INIT oder PATH auffindbar sein.
5.1. Sektion [CS]
-----------------
MODEL=<modell>
Mögliche Werte für <modell> sind die Worte TINY, SMALL, MEDIUM, COMPACT,
LARGE, HUGE, MTHREAD oder SMALL386.
EXETYPE=<typ>
Mögliche Werte für <typ> sind DEFAULT, DOS, COM, OS2, OS2PM,
BOUND, WINDOWS, MIRRORS 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,
CALLEMULATOR, CALL80X87, 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.
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.
MASM=5 or MASM=6
Diese Einstellung teilt CS mit, ob MASM Version 5.00 oder 5.10 benutzt
wird oder das neue Programm ML.EXE von MASM Version 6.00 benutzt wird.
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).
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.
OBJ386=<pathlist>
Dto. für 386-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>
INCLUDE386=<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. INCLUDE386 wird als INCLUDE verwendet,
wenn der 386-Compiler aufgerufen wird.
RLIB=<pathlist>
PLIB=<pathlist>
PLIB386=<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),
32-bit-Protected-Mode-Programmen (386) bzw. Windows/WLO- und Mirrors-
Programmen.
In den Variablen RAMDISK, SOURCE, OBJ, OBJ386, OUTPUT, INCLUDE,
INCLUDE386, TMP, RLIB, PLIB, PLIB386 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
CL386=-W3 -Zdep1 -J -Gs -Oxn
PL=-w3 -Zdz
FL=-W1 -Zd -FPi -G2s -Ox
ML=-W2 -Zm -Zd -Zp1 -Cp
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/WLO-Programmen das Statement "EXETYPE WINDOWS" in die DEF-Datei
aufgenommen werden, da die Vor- einstellung dieses Linkers "EXETYPE OS2"
ist.
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. Für
Windows/WLO-Programme wird RC für Windows benötigt. Der Windows Resource
Compiler sollte in RCWIN.EXE umbenannt werden. Stellen Sie sicher, daß
der richtige RCPP.EXE verfügbar ist.
Alternativ zur Angabe einer RC-Datei kann eine RES-Datei verwendet
werden. Dies dient zur Unterstützung des Whitewater Resource Toolkits.
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/WLO- oder Mirrors-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 CS.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 ...