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 >
Text File  |  1992-05-21  |  24KB  |  613 lines

  1. CS 6.8 - Compiler Shell - (c) Kai Uwe Rommel - Jan 18 1992
  2.  
  3.  
  4. 1. Einleitung
  5. -------------
  6.  
  7. CS ist eine "shell" für die folgenden Programmierwerkzeuge
  8. von Microsoft:
  9.  
  10. - Macro Assembler (ab 5.00, 6.00 wird unterstützt)
  11. - C Compiler (ab 5.00, 6.00 wird unterstützt)
  12. - 386 C Compiler
  13. - Pascal Compiler (ab 4.00)
  14. - FORTRAN Compiler (ab 4.00)
  15. - Windows Resource Compiler (ab 2.00)
  16. - Whitewater Ressource Toolkit für Windows
  17. - OS/2 Resource Compiler
  18. - LINK (ab 5.00), LINK386
  19. - ILINK
  20. - BIND
  21. - EXE2BIN
  22. - CVPACK
  23. - LIB (ab 3.08)
  24. - CREF
  25. - PWBRMAKE
  26.  
  27. Außerdem werden die folgenden Programme unterstützt:
  28.  
  29. - FLEX Scanner Generator (ab 2.3)
  30. - GNU BISON Parser Generator (ab 1.03)
  31.  
  32.  
  33. CS nimmt dem Benutzer die Eingabe ständig benutzter Optionen und
  34. Kommandos ab, sucht selbständig Dateien in festgelegten Verzeichnissen
  35. und führt Compilerläufe nach einer "MAKE"-Strategie durch.
  36.  
  37. CS ist eine Family-Application und läuft sowohl unter DOS als auch
  38. unter OS/2 (Real und Protected Mode).
  39.  
  40. Es können Ausgabedateien für folgende Umgebungen erzeugt werden:
  41.  
  42.    - DOS (EXE-Format)
  43.    - DOS (COM-Format)
  44.    - Windows oder WLO (Windows Libraries für OS/2)
  45.    - Mirrors (Windows-Emulation für OS/2)
  46.    - OS/2 (16- und 32-bit)
  47.    - OS/2 Presentation Manager (16- und 32-bit)
  48.    - Family-Applications für OS/2 und DOS bzw. DOS box
  49.  
  50.    Für Windows/WLO, Mirrors, OS/2 und OS/2 PM können auch DLL's erzeugt
  51.    werden.
  52.  
  53. Weitere Ausgabedateien:
  54.  
  55.    - Linker Maps
  56.    - Listings
  57.    - Object Libraries
  58.  
  59.  
  60. 2. Syntax
  61. ---------
  62.  
  63. Aufruf: CS argument*
  64.  
  65.         argument  = globalopt | fileset
  66.         fileset   = filespec  | '(' item* ')'
  67.         item      = localopt  | filespec | '(' special ')'
  68.         special   = genopt    | filespec
  69.         filespec  = filename  | filename '{' include* '}'
  70.         include   = filename
  71.  
  72. Wobei:    globalopt ε { -? -H -Am -Ff -Le -Sn -Oid -Q -I -F -X -P
  73.               -C -L -E -N -B -M -LS -SB -K -NS -NF }
  74.  
  75.         m         = Modell-Bezeichner T, S, M, C, L, H oder MT
  76.         f         = Float-Typ E, 7, A oder D
  77.         e         = Programtyp-Bezeichner R, C, P, PM, B, W oder L
  78.         id        = Name der CS.INI-Sektion mit den Compiler-Optionen
  79.         n         = Stackgröße in Bytes (dezimal oder hex mit Präfix 0x)
  80.  
  81.         filename  = beliebiger DOS-Dateiname, alle Namen in einem Fileset in ()
  82.                     müssen dieselbe Extension haben (C, PAS, FOR oder ASM)
  83.         localopt  = beliebige Option für den Compiler, der zu der Extension
  84.                     der Dateien in dem betreffenden Fileset gehört
  85.         genopt    = any parser or scanner generator option
  86.  
  87. Eingabedateien können die Typen C, PAS, FOR, ASM, L, Y, OBJ, LIB oder RC, RES
  88. haben bzw. DEF (Linkerinformationen), BAD (Informationen für BIND über
  89. an BadDynLink zu bindende Namen) oder CS (CS Projektdatei).
  90. Das '(' special ')'Konstrukt ist nur für Dateien der Typen L und Y erlaubt.
  91. Eine Datei mit Typ MDT kann angegeben werden, für die zum inkrementellen
  92. Übersetzen notwendigen Informationen des QCC von C 6.00 (siehe -Q).
  93. Dateien mit Typ LOG oder BAT/CMD legen die Namen von Dateien für das
  94. Bildschirmprotokoll bzw. die zu generierende Batch-Datei fest.
  95. Eine Datei mit Typ BSC legt die zu erzeugende PWB-Browse-Datenbank fest.
  96.  
  97. Wird ein Verzeichnis als Parameter verwendet, so wird es als Ausgabe-
  98. Verzeichnis verwendet. Es muß als erstes nicht-Options-Argument
  99. angegeben werden.
  100.  
  101. Um zusätzliche API-Libraries/Objektdateien für BIND statt für LINK zu
  102. spezifizieren, muß ein Ausrufezeichen unmittelbar an den Namen der Library
  103. bzw. der Objektdatei angehängt werden um sie von LINK-Libraries/Objektdateien
  104. zu unterscheiden. Nach BIND-Libraries wird im PLIB-Pfad, nach BIND-Objekt-
  105. Dateien im OBJ-Pfad (siehe 5.1) gesucht.
  106.  
  107. Sollen für eine oder mehrere Quelldateien spezielle Optionen an den
  108. betreffenden Compiler übergeben werden, so können diese zusammen mit
  109. den jeweiligen Dateien in runde Klammern eingeschlossen werden. Für
  110. jeden in () eingeschlossenen Satz Quelldateien wird ein eigener
  111. Compilerlauf mit den angegebenen lokalen Optionen durchgeführt.
  112. Für Quelldateien für FLEX und BISON, können sowohl optionen für diese
  113. Programme als auch Optionen für den C-Compiler angegeben werden (siehe
  114. unten).
  115.  
  116. Zur Unterstützung der MAKE-Strategie kann zu jeder Quelldatei ein Satz
  117. Dateien angegeben werden, von denen die Quelldatei abhängig ist (z.B.
  118. Include-Dateien). Dieser Satz Dateien muß in {} eingeschlossen werden
  119. und der Quelldatei unmittelbar folgen. Diese Dateien werden NUR für
  120. die Durchführung der MAKE-Strategie berücksichtigt und sonst in
  121. keinster Weise verwendet.
  122.  
  123. Werden in der Kommandozeile Dateien des Typs EXE, SYS, DLL, COM, MAP, BSC oder
  124. LST angegeben, so werden dadurch die Namen der Ausgabedateien bestimmt und
  125. (EXE/DLL/COM) ihr Typ festgelegt bzw. (MAP/LST/BSC) ihre Produktion ausgelöst.
  126. DLL und SYS sind Synonyme für EXE. Soll ein DOS-Gerätetreiber im Binärformat
  127. erzeugt werden, so ist -LC zusätzlich zur Endung SYS anzugeben. DOS kann aber
  128. auch Gerätetreiber im EXE-Format laden.
  129.  
  130.  
  131. Beispiel:
  132. CS -lp haupt.c{def.h} prog.exe (mod1.c mod2.c -Gt) mod3.asm mod4.c mod5.pas
  133.  
  134. (Falls dies etwas kryptisch erscheint, so verdeutlicht das den Nutzen
  135. von CS- Projektdateien, siehe später folgende Projektdatei-Version
  136. dieses Beispiels.)
  137.  
  138. Wildcard-Expansion wird unterstützt, jedoch ist zu beachten, daß Namen,
  139. die Wildcards enthalten, links und rechts durch Leerzeichen begrenzt
  140. werden müssen. Wildcards werden nicht in Projektdateien unterstützt.
  141.  
  142. Falsch:  CS haupt.c (mod*.c -G2)
  143. Richtig: CS haupt.c ( mod*.c -G2)
  144.  
  145. Für BISON und FLEX ist es oft erforderlich, sowohl Optionen für diese
  146. Programmgeneratoren als auch für den C-Compiler anzugeben, der die
  147. generierten C-Programme übersetzt. Für diesen Zweck können Optionen für die
  148. Parsergeneratoren in einem zweiten Klammerniveau () mit dem Dateinamen
  149. eingschlossen werden.
  150.  
  151. Beispiel: CS -lp haupt.c (-W1 (-d gramm.y))
  152.  
  153. Die Option -d wird an BISON übergeben, während die Option -W1 dem C-Compiler
  154. übergeben wird, wenn gramm.c übersetzt wird. Dies ist aber kein wirklich
  155. geschachteltes Klammerniveau, lediglich ein Hilfsmittel zur Trennung der
  156. Optionen. Deshalb werden im folgenden Beispiel:
  157.  
  158. CS -lp haupt.c (-W1 (-d gramm1.y) (-v gramm2.y))
  159.  
  160. die Optionen -d und -v BEIDE an BISON übergeben, und zwar für JEDE der beiden
  161. Quelldateien. Die korrekte Syntax für dieses Beispiel wäre:
  162.  
  163. CS -lp haupt.c (-W1 (-d gramm1.y)) (-W1 (-v gramm2.y))
  164.  
  165. CS ruft FLEX und BISON mit den nötigen Optionen auf, um deren Ausgabedateien
  166. mit den gleichen Namen wie die Eingabedateien zu erzeugen. Die generierten
  167. C-Programme werden im gleichen Verzeichnis abgelegt, in dem sich die Eingabe-
  168. Dateien befinden, NICHT im OUTPUT-Verzeichnis (siehe 5.1).
  169. Deshalb dürfen die Optionen -t von FLEX und -o von BISON nicht verwendet
  170. werden; sie werden stets von CS benutzt.
  171.  
  172.  
  173. 3. CS-Projektdateien
  174. --------------------
  175.  
  176. Trifft CS in der Kommandozeile auf eine Datei mit dem Typ .CS, so wird
  177. die Kommandozeile nicht weiter ausgewertet, sondern weitere Optionen
  178. oder Dateinamen werden aus der betreffenden Datei gelesen. Die
  179. CS-Dateien (= Projektdateien) können beliebig viele Zeilen enthalten.
  180.  
  181. Der Dateityp .CS kann bei Projektdateien auch weggelassen werden, d.h.
  182. es reicht "CS name" falls name.CS im SOURCE-Pfad oder im aktuellen
  183. Verzeichnis existiert. Projektdateien sind die EINZIGEN Dateien, deren
  184. Typ in den CS-Argumenten weggelassen werden kann.
  185.  
  186. Für den Inhalt der CS-Dateien gilt dieselbe Syntax wie für die
  187. Kommandozeilen- parameter, jedoch kann die Struktur eines Projektes auf
  188. mehreren Zeilen über- sichtlicher festgehalten werden. Kommentarzeilen
  189. müssen mit ; oder # beginnen.
  190.  
  191. CS-Projektdateien sind in erster Linie für umfangreichere Projekte
  192. gedacht, bei denen () und/oder {} genutzt werden. Dann hat die
  193. Projektdatei die Funktion eines MAKEfiles und erspart Tipparbeit.
  194. CS-Projektdateien sind zudem weniger aufwendig zu schreiben und weniger
  195. fehleranfällig als MAKEfiles.
  196.  
  197. Die CS-Datei für das obige Beispiel könnte etwa so aussehen:
  198.  
  199. ; Projekt: xyz
  200. ; Stand:   1.4.1989
  201. ;
  202. ; Hauptmodul
  203. haupt.c {def.h}
  204. ;
  205. ; Untermodule mit Zusatz-Optionen
  206. (mod1.c mod2.c -Gt)
  207. ;
  208. ; Weitere Untermodule
  209. mod3.asm
  210. mod4.c
  211. mod5.pas
  212. ;
  213. ; Ausgabe-Name für BOUND-Programm
  214. prog.exe -lb
  215.  
  216. Falls an CS keine Parameter übergeben werden, oder die Parameter nur
  217. Optionen bzw. zumindest keine Eingabedateien der Typen C, PAS, FOR, ASM
  218. oder OBJ enthalten, so sucht CS im aktuellen Verzeichnis nach der Datei
  219. PROJECT.CS. Wird diese Datei gefunden, so wird sie gelesen, als ob sie
  220. als letzter Parameter an CS übergeben worden wäre. Das heißt, daß
  221. Optionen wie z.B. -OCV die Anweisungen in PROJECT.CS beeinflussen
  222. können. PROJECT.CS hat also eine ähnliche Funktione wie "makefile" für
  223. das Programm Make aus UNIX o.ä. Tools.
  224.  
  225.  
  226. 4. Optionen
  227. -----------
  228.  
  229. -Am     Legt das Speichermodell für C und MASM fest, wobei für MASM das 
  230.         Modell in Form eines Define-Symbols mit dem Namen "model"
  231.     übergeben wird, das noch in einem Statement der Art 
  232.         "% .MODEL model"
  233.     ausgewertet werden muß. Für m sind T, S, M, C, L, H, MT und 3 gültig.
  234.     MT bezeichnet ein Custom-Modell zur Multithread-Programmierung
  235.     unter OS/2 (mit LLIBCMT.LIB). T (TINY) wird nur von C 6.00 erkannt.
  236.         3 bezeichnet das 386 Small Model und selektiert den 386-Compiler
  237.         und Linker etc.
  238.  
  239. -Le     Bestimmt das Ausgabeformat des Linkers (e = R, C, W, P, PM, B oder L).
  240. -LR     -> Real-Mode-EXE für DOS
  241. -LC     -> Real-Mode-COM für DOS
  242. -LW     -> Windows-EXE für DOS-Windows oder OS/2-WLO
  243. -LM     -> Mirrors-EXE für OS/2
  244. -LP     -> Protected-Mode-EXE für OS/2 (ohne Presentation Manager)
  245. -LPM    -> Protected-Mode-EXE für OS/2 (für Presentation Manager)
  246. -LB     -> Bound-EXE
  247. -LL     -> es wird nicht gelinkt sondern eine Library mit LIB erzeugt
  248.  
  249. -Ff     bestimmt den Typ der Fließkommaarithmetik
  250. -FE     Emulator-Fließkommaarithmetik                    Dies bestimmt
  251. -F7     Fließkommaarithmetik mit Koprozessor             auch den Typ der
  252. -FCE    Emulator-Fließkommaarithmetik-Calls              Standardlibrary mit !
  253. -FC7    Fließkommaarithmetik mit Koprozessor-Calls
  254. -FA     alternative Fließkommaarithmetik   
  255. -FD     Dezimalarithmetik (nur für Pascal wirksam)
  256.  
  257. -Oid    Mit id werden die Compileroptionen eingestellt. Dazu wird in
  258.     CS.INI nach eine Sektion mit dem Namen [CS-id] gesucht. Aus
  259.     dieser Sektion werden die Inhalte für die Environment-Variablen
  260.         CL, PL, FL, MASM und LINK aus den gleichnamigen Einträgen gelesen.
  261.         Die Länge von id ist auf max. 15 Zeichen beschränkt.
  262.  
  263. -Sn     Definiert die Stackgröße, n kann dezimal oder 0xhex angegeben werden.
  264.  
  265. -C      Compile only
  266.  
  267. -L      Link only
  268.  
  269. -E      Echo der Kommandos, bevor sie ausgeführt werden
  270.  
  271. -N      Keine Ausführung der Kommandos, nur Anzeige
  272.  
  273. -G      Keine Ausführung der Kommandos, aber Batch-Datei erzeugen
  274.  
  275. -K      Protokoll von allen Programm-Ausgaben in einem LOGfile anlegen
  276.         (siehe unten).
  277.  
  278. -B      Abschalten der MAKE-Strategie
  279.  
  280. -X      Linken ohne Standard-Libraries
  281.  
  282. -Q      Inkrementelles Übersetzen (nur C 6.00 und höher)
  283.  
  284. -I      Inkrementelles Linken
  285.  
  286. -F      Normales (volles) Übersetzen und Linken
  287.  
  288. -P      Aufruf von CVPACK, falls für CodeView gelinkt wird
  289.  
  290. -M      Löst die Erzeugung einer Linker-Map (bei -LB auch Binder-Map) aus.
  291.  
  292. -LS     Löst die Erzeugung eines Übersetzungs-Listings aus
  293.  
  294. -SB     Erzeugung einer Source-Browser-Datenbank für PWB (Dateityp BSC).
  295.         Dies wird zur Zeit nur von C 6.00 und MASM 6.00 unterstützt,
  296.         jedoch keiner anderen Sprache. Die SBR-Dateien aller C-Module
  297.         werden im Ausgabe-Verzeichnis erzeugt, für die BSC-Datei
  298.         können Name und Pfad optional angegeben werden.
  299.  
  300. -NF     Verwendung vollständiger Pfadnamen der Quelltexte beim Übersetzen
  301.         (Sinnvoll bei Verwendung von CodeView, dieser findet dann die
  302.         Quelltexte auch dann, wenn sie nicht im aktuellen Verzeichnis stehen)
  303.  
  304. -NS     Verwendung einfacher Dateinamen, falls die Quelldateien im aktuellen
  305.         Verzeichnis stehen
  306.  
  307.  
  308. 5. CS.INI
  309. ------------
  310.  
  311. Die für CS erforderlichen Informationen über die konkrete Umbgebung
  312. müssen in der Datei CS.INI definiert werden. Diese Datei muß über
  313. die Environment- Variablen INIT oder PATH auffindbar sein.
  314.  
  315.  
  316. 5.1. Sektion [CS]
  317. -----------------
  318.  
  319. MODEL=<modell>
  320.  
  321. Mögliche Werte für <modell> sind die Worte TINY, SMALL, MEDIUM, COMPACT,
  322. LARGE, HUGE, MTHREAD oder SMALL386.
  323.  
  324. EXETYPE=<typ> 
  325. Mögliche Werte für <typ> sind DEFAULT, DOS, COM, OS2, OS2PM,
  326. BOUND, WINDOWS, MIRRORS oder LIBRARY. Bei DEFAULT wird abhängig vom
  327. aktuellen Maschinenmodus automatisch ein Real- oder
  328. Protected-Mode-EXE-Programm erzeugt. Bei LIBRARY werden alle
  329. Objektdateien mit LIB in eine Library geschrieben.
  330.  
  331. FLOAT=<typ>
  332. Mögliche Werte für die Fließkommaarithmetik sind EMULATOR, 80X87,
  333. CALLEMULATOR, CALL80X87, ALTERNATE oder DECIMAL.
  334.  
  335. OPTIONS=<id>
  336. ID der Sektion mit den Default-Compileroptionen (siehe auch bei
  337. Kommandozeilen- option -Oid). Die Länge von <id> ist auf max. 15
  338. Zeichen beschränkt.
  339.  
  340. NAMES=FULL oder NAMES=SHORT
  341. Bei FULL werden beim Übersetzen vollständige Pfadnamen der
  342. Quelltexte verwendet. (Sinnvoll bei Verwendung von CodeView,
  343. dieser findet dann die Quelltexte auch dann, wenn sie nicht im
  344. aktuellen Verzeichnis stehen.) Bei SHORT werden einfache
  345. Dateinamen verwendet, falls die Quelldateien im aktuellen
  346. Verzeichnis stehen.
  347.  
  348. BUILD=NO oder BUILD=YES
  349. Mit Build=Yes wird die MAKE-Strategie abgschaltet. Normalerweise sollte
  350. mit BUIL=NO gearbeitet werden.
  351.  
  352. MASM=5 or MASM=6
  353. Diese Einstellung teilt CS mit, ob MASM Version 5.00 oder 5.10 benutzt
  354. wird oder das neue Programm ML.EXE von MASM Version 6.00 benutzt wird.
  355.  
  356. STACK=<größe>
  357. Legt die Standard-Stackgröße fest.
  358.  
  359. ILINK=<Optionen>
  360. Damit werden die Optionen für LINK festgelegt, mit denen ein .EXE für
  361. ILINK vorbereitet wird (sollte /PADC:x und /PADD:x enthalten, nicht aber
  362. /INC).
  363.  
  364. RAMDISK=<path>
  365. Wird für <path> ein nichtleerer Pfadname angegeben (der in die RAMDISK
  366. verweisen sollte), so werden vor dem Start eines Compilers die zu der
  367. betreffenden Sprache gehörigen Include-Files dorthin kopiert, falls sie
  368. dort noch nicht existieren. Siehe 4.3.
  369.  
  370. SOURCE=<pathlist>
  371. Damit können Verzeichnisse angegeben werden, die automatisch nach
  372. Quelldateien durchsucht werden, wenn CS sie nicht im aktuellen
  373. Verzeichnis findet. SOURCE gilt für Dateien mit den Typen ASM, C, PAS, FOR,
  374. DEF, BAD und CS.
  375.  
  376. OBJ=<pathlist>
  377. Dto. für Objektdateien.
  378.  
  379. OBJ386=<pathlist>
  380. Dto. für 386-Objektdateien.
  381.  
  382. OUTPUT=<path>
  383. Spezifiziert das Ausgabeverzeichnis für alle mit CS erzeugten Dateien.
  384. <path> sollte nach Möglichkeit in die Ramdisk zeigen. Ausgabedateien
  385. (EXE-, MAP-Files) können aber auch explizit Laufwerksbezeichnungen oder
  386. Pfadnamen vorangestellt werden, damit wird OUTPUT für die betreffende
  387. Datei dann ignoriert.
  388.  
  389. INCLUDE=<pathlist>
  390. INCLUDE386=<pathlist>
  391. TMP=<path>
  392. Diese Einträge spezifizieren die Inhalte der gleichnamigen Environment-
  393. Variablen für die Compiler und den Linker und werden vor dem Aufruf der
  394. Programme entsprechend gesetzt. INCLUDE386 wird als INCLUDE verwendet,
  395. wenn der 386-Compiler aufgerufen wird.
  396.  
  397. RLIB=<pathlist>  
  398. PLIB=<pathlist>  
  399. PLIB386=<pathlist> 
  400. WLIB=<pathlist> 
  401. Diese Einträge spezifizieren den Inhalt der Environmentvariable LIB beim
  402. Linken von Real-Mode-Programmen (DOS-EXE oder COM),
  403. Protected-Mode-Programmen (OS2-EXE oder Bound-Programme),
  404. 32-bit-Protected-Mode-Programmen (386) bzw. Windows/WLO- und Mirrors-
  405. Programmen.
  406.  
  407. In den Variablen RAMDISK, SOURCE, OBJ, OBJ386, OUTPUT, INCLUDE,
  408. INCLUDE386, TMP, RLIB, PLIB, PLIB386 und WLIB kann auf
  409. Environment-Variablen bezug genommen werden, indem deren Namen
  410. mit % eingeschlossen werden (wie in Batchfiles).
  411.  
  412. Beispiel: INCLUDE=%TMP%\INCLUDE;D:\LIB\INCLUDE;C:\MS\INCLUDE
  413. Hier wird für %TMP% der Wert der Environment-Variablen TMP eingesetzt.
  414.  
  415.  
  416. 5.2. Sektionen [CS-id]
  417. ----------------------
  418.  
  419. Diese Sektionen enthalten die Einträge mit den gewünschten
  420. Standard- optionen der gleichnamigen Programme.
  421.  
  422. Beispiel:
  423.  
  424. [CS-STD]
  425. CL=-W3 -Zdep1 -J -G2s -Oxn
  426. CL386=-W3 -Zdep1 -J -Gs -Oxn
  427. PL=-w3 -Zdz
  428. FL=-W1 -Zd -FPi -G2s -Ox
  429. ML=-W2 -Zm -Zd -Zp1 -Cp
  430. MASM=-W2 -Ml -X -Zd
  431. LINK=/BAT /NOIG /NOE
  432.  
  433.  
  434. 5.3. Sektionen [CS+ASM], [CS+C], [CS+FOR] und [CS+PAS]
  435. ------------------------------------------------------
  436.  
  437. In diesen Sektionen wird festgelegt welche Include-Files zu welcher
  438. Sprache in das RAMDISK-Verzeichnis kopiert werden und wo sie zu
  439. finden sind.
  440.  
  441. Die beliebig vielen Einträge je Sektion haben das Format:
  442.  
  443. FLAGFILE=SOURCE
  444.  
  445. wobei FLAGFILE den Namen einer Datei enthält, deren Existenz vor dem
  446. Start des entsprechenden Compilers geprüft wird. Existiert diese Datei
  447. nicht im RAMDISK-Verzeichnis, so werden die mit SOURCE angegebenen
  448. Dateien dorthin kopiert. SOURCE muß einen vollständigen Pfad und ein
  449. Dateimuster enthalten.
  450.  
  451. Beispiel:
  452.  
  453. [CS+ASM]
  454. DOS.INC=C:\INCLUDE\*.INC
  455. OS2.INC=C:\INCLUDE\OS2\*.INC
  456. MACROS.INC=D:\INCLUDE\*.INC
  457.  
  458.  
  459. 6. Sonstige Eigenschaften
  460. -------------------------
  461.  
  462. Falls der Linker einen Fehler meldet, so bleibt dessen Standard-Eingabe
  463. (Response-Datei) unter dem Namen CS.INP im OUTPUT-Verzeichnis erhalten.
  464. Mit Hilfe dieser Datei kann festgestellt werden, ob CS die richtigen
  465. Objekt- Dateien und Libraries zum Linken angegeben hat.
  466.  
  467. Wenn der zu den Compilern bzw. zum Assembler gelieferte
  468. Segmented-Executable Linker verwendet wird, so sollte zur Erzeugung von
  469. Windows/WLO-Programmen das Statement "EXETYPE WINDOWS" in die DEF-Datei
  470. aufgenommen werden, da die Vor- einstellung dieses Linkers "EXETYPE OS2"
  471. ist.
  472.  
  473. Die Standard-Libraries von Microsoft C, Pascal und FORTRAN müssen
  474. explizit den Mode-Suffix im Namen haben, wie z.B. CLIBCER.LIB,
  475. CLIBCEP.LIB und CLIBCEW.LIB statt CLIBCE.LIB, LIBPASER.LIB statt
  476. LIBPASE.LIB und z.B. MLIBFER.LIB statt MLIBFORE.LIB.
  477.  
  478. Obgleich CS den SOURCE Pfad nach Eingabedateien durchsucht, ist es
  479. empfehlenswert, das aktuelle Verzeichnis auf die Quelltexte
  480. einzustellen, da die Compiler nach Include-Dateien natürlich NICHT im
  481. SOURCE Pfad suchen.
  482.  
  483. Beim Windows Resource Compiler ist dies sogar erforderlich, da dieser
  484. keine vollständigen Pfadnamen akzeptiert. Die RES-Datei des
  485. Resource-Compilers wird entgegen den sonstigen Regeln nicht im OUTPUT
  486. Verzeichnis abgelegt sondern dort, wo auch die RC-Datei steht.
  487.  
  488. Windows und OS/2 verwenden unterschiedliche Resource Compiler. Stellen
  489. Sie sicher, daß RC für Windows unter DOS über PATH gefunden werden kann
  490. und RC für OS/2 über den OS/2-PATH gefunden werden kann. Für
  491. Windows/WLO-Programme wird RC für Windows benötigt. Der Windows Resource
  492. Compiler sollte in RCWIN.EXE umbenannt werden. Stellen Sie sicher, daß
  493. der richtige RCPP.EXE verfügbar ist.
  494.  
  495. Alternativ zur Angabe einer RC-Datei kann eine RES-Datei verwendet
  496. werden. Dies dient zur Unterstützung des Whitewater Resource Toolkits.
  497.  
  498.  
  499. 7. Automatische Dateinamenswahl
  500. -------------------------------
  501.  
  502. Werden keine Namen für die Ausgabedateien (EXE, MAP) angegeben, so
  503. werden sie aus dem Namen der ersten übergebenen Datei gebildet.
  504.  
  505. Wird ein Protected-Mode- oder Bound-EXE-Programm erzeugt und ist keine
  506. DEF- bzw. keine BAD-Datei angegeben, so sucht CS immer nach einer DEF-
  507. bzw. BAD- Datei mit dem gleichen Namen und Pfad wie ihn die erste auf
  508. der Kommandozeile oder in der CS-Datei angegebene Datei hat und
  509. übergibt diese Dateien automatisch an LINK bzw. BIND, wenn sie
  510. existieren.
  511.  
  512. Wird ein Windows/WLO- oder Mirrors-Programm erzeugt, so werden auf die
  513. gleiche Weise eine DEF- und eine RC-Datei gesucht und mit verarbeitet.
  514.  
  515. Um Programme für den OS/2 Presentation Manager zu erzeugen, wird mit
  516. -LPM wie für normale OS/2-Programme übersetzt, die DEF- und RC-Dateien
  517. werden wieder automatisch gesucht und mit verarbeitet. Durch -LPM wird
  518. statt DOSCALLS.LIB nun mit OS2.LIB gelinkt.
  519.  
  520. Weichen die Namen von RC-, DEF- und ggf. BAD-Datei vom Namen der ersten
  521. Quelldatei ab, so sind sie explizit anzugeben.
  522.  
  523. Dies vereinfacht die Übersetzung von kleineren Single-Source-
  524. Programmen, für die dann keine CS-Datei angelegt werden muß, wenn die
  525. Zusatzdateien (DEF, BAD bzw. RC) den gleichen Namen haben wie die
  526. Quelldatei (aber natürlich den richtigen Typ).
  527.  
  528.  
  529. 8. Log file
  530. -----------
  531.  
  532. Häufig ist es nützlich, ein Protokoll aller Ausgaben von CS und den
  533. aufgerufenen Compilern, dem Linker usw. in einer Datei zu haben.
  534. Dies würde zum Beispiel erlauben, einen großen Übersetzungsvorgang zu
  535. starten und dann zum Mittagessen zu gehen und hinterher die Warnungen,
  536. Fehlermeldungen usw. zu lesen ...
  537. Mit der Option -K wird ein Protokoll in eine Datei mit dem gleichen Namen
  538. und im gleichen Verzeichnis geschrieben wie das zu erzeugende Programm,
  539. aber mit Dateityp LOG. Alle Ausgaben von aufgerufenen Programmen und von
  540. CS selbst (z.B. durch Option -E) werden in diese Protokolldatei dupliziert.
  541. Unter DOS hat dies aber den Nachteil, daß die Ausgaben jedes Übersetzungs-
  542. schrittes erst auf dem Bildschirm erscheinen, wenn der Schritt beendet
  543. ist und bevor der nächste beginnt. Unter OS/2 werden bei Benutzung der
  544. Option -K alle Programme über Pipes aufgerufen, die zum Bildschirm und
  545. in die Protokolldatei aufgeteilt werden. Dies ermöglicht sofortige
  546. (synchrone) Bildschirmausgabe und gleichzeitig eine Protokolldatei.
  547. Eine Protokolldatei ist insbesondere zum Beispiel dann interessant, wenn
  548. der Warning-Level eines Compilers gewechselt wird. Das kann Hunderte von
  549. Warnungen bei älteren C-Programmen zur Folge haben, die auf diese Weise
  550. in eine Datei geschrieben werden können und später mit einem Editor
  551. bearbeitet werden können, ohne daß man zur Übersetzungszeit (z.B. bei sehr
  552. umfangreichen Programmen) "im Dunkeln sitzt", sondern den Ablauf verfolgen
  553. kann.
  554.  
  555.  
  556. 9. DLL's
  557. --------
  558.  
  559. DLL's werden meist mit Speichermodellen wie -Asnu, -Asnw oder -Alfw
  560. usw. erzeugt. Laut C Compiler User's Manual sind solche Modelle auch
  561. mit einem Standardmodell und zusätzlich -Au oder -Aw erzeugbar. Es
  562. sollte daher das entsprechende Standardmodell global an CS übergeben
  563. werden (siehe unten) und -Aw oder -Au mit den betreffenden Quelldateien
  564. in runde Klammern eingeschlossen werden. Folgende Standardmodelle
  565. entsprechen den speziellen Speichermodellen:
  566.  
  567. -Asnw --> -AS -Aw    dto. für -Au
  568. -Asfw --> -AC -Aw
  569. -Alnw --> -AM -Aw
  570. -Alfw --> -AL -Aw
  571.  
  572. Um z.B. den Compileraufruf "CL -Asnw -G2s graflib.c" zu erreichen, muß
  573. "CS -AS (-Aw -G2s graflib.c)" verwendet werden (bzw. sinngemäße
  574. CS-Datei).
  575.  
  576. Für das Linken von DLL's ist u.U. die Option -X sinnvoll, wenn keine
  577. Standardbibliotheken mitgelinkt werden sollen.
  578.  
  579. Für DLL's sind diverse Endungen üblich, für Windows wird meist .EXE verwendet,
  580. für OS/2 meist .DLL. CS erlaubt die Angabe von .DLL alternativ zu .EXE.
  581. Um andere Endungen zu erzeugen, muß die .EXE-Datei eben umbenannt werden.
  582.  
  583. In der DEF-Datei darf natürlich das LIBRARY-Statement statt des
  584. NAME-Statements nicht fehlen.
  585.  
  586.  
  587. 10. Exit-Codes
  588. -------------
  589.  
  590. CS gibt bei Beendigung folgende Codes an den Aufrufer zurück:
  591.  
  592.   0 - erfolgreicher Ablauf
  593.   1 - es war nichts zu tun
  594.   2 - ein aufgerufenes Programm hat einen Fehler zurückgemeldet
  595.       (Compiler, Assembler, Linker ...)
  596.   3 - Syntaxfehler in der Kommandozeile oder einer Projektdatei (.CS)
  597.   4 - Konfigurationsfehler in CS.INI
  598.   5 - eine benötigte Eingabedatei ist nicht vorhanden
  599.   6 - Ablauffehler von CS
  600.       (Speicher nicht ausreichend, E/A-Fehler ... )
  601.  
  602.   256 - Abbruch durch den Benutzer
  603.  
  604.  
  605. 11. Einschränkungen
  606. ------------------
  607.  
  608. - seit dieser Version keine mehr :-)
  609.  
  610. Mir fallen keine weiteren Features mehr ein, ich bin aber für
  611. Anregungen dankbar ...
  612.  
  613.