home *** CD-ROM | disk | FTP | other *** search
/ Black Box 4 / BlackBox.cdr / proglang / cs56.arj / GERMAN.DOC < prev    next >
Encoding:
Text File  |  1992-08-17  |  21.8 KB  |  574 lines

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