Es soll ja immer noch einige Leute geben, die noch nie den Kommandozeilen Compiler von Delphi benutzt haben
Hier ein paar Tipps (eine kleine Anleitung) zum Kommandozeilen Compiler von Delphi
1. Erstelle ein kleines Demoprojekt (Delphi starten -> neues Projekt -> einen TButton aufs Formular -> Close; zuweisen und speichern in c:\temp\test\)
2. Drücke F9 zum Starten in der
IDE -> Programm wird kompiliert und gestartet
3. Programm und Delphi beenden
4. Shell öffnen (Dos Box / Eingabeaufforderung)
5. In Verzeichnis c:\temp\test wechseln
6. Den Kommandozeilen Compiler aufrufen
7. Es wird die Datei Project1.dpr kompiliert und ein project1.exe erstellt.
Code:
C:\TEMP\Test>dcc32 Project1
Borland Delphi Version 15.0
Copyright (c) 1983,2002 Borland Software Corporation
Unit1.pas(32)
Project1.dpr(14)
48 lines, 0.36 seconds, 314324 bytes code, 7429 bytes data.
Ok, so weit so gut.
In Deinem Verzeichnis sollten folgende Dateien vorhanden sein:
Code:
C:\TEMP\Test>dir
Volume in Laufwerk C: hat keine Bezeichnung.
Volumeseriennummer: ACAF-C564
Verzeichnis von C:\TEMP\Test
10.09.2004 14:15 <DIR> .
10.09.2004 14:15 <DIR> ..
10.09.2004 14:15 426 Project1.cfg
10.09.2004 14:15 2.912 Project1.dof
10.09.2004 14:12 188 Project1.dpr
10.09.2004 14:15 374.784 Project1.exe
10.09.2004 14:15 876 Project1.res
10.09.2004 14:15 3.651 Unit1.dcu
10.09.2004 14:11 495 Unit1.dfm
10.09.2004 14:12 465 Unit1.pas
8 Datei(en) 383.797 Bytes
2 Verzeichnis(se), 15.032.627.712 Bytes frei
Project1.dpr: der Projektquelltext (hier wird Unit1 mit Form1 aufgerufen)
Unit1.pas: der Quelltext des Hauptformulars Form1
Unit1.dfm: hier sind die visuell festgelegten Eigenschaften abgespeichert (alles was man im Objektinspektor sehen kann)
Wenn nur diese 3 Dateien vorhanden sind, kann man schon kompilieren!
Project1.res: Resourcendatei wird von der
IDE automatisch erstellt. (Hier ist. z.B. das Icon der Exe enthalten)
Project1.dof:
DOF = Delphi Option File -> hier speichert die Delphi
IDE die Optionen ab
Project1.cfg: Hier werden die Optionen für den Compiler abgespeichert. Die
IDE erzeugt diese Datei beim Kompilieren.
Die *.cfg Datei ist sehr nützlich!
Wenn zu einem Projekt eine cfg-Datei existiert, dann übernimmt DCC32.EXE automatisch die Optionen aus der Datei. (Mann kann also alle Einstellungen in der
IDE vornehmen, und muss sie nicht als Parameter an DCC32 übergeben) Diese Datei ist eine Textdatei und kann editiert werden. z.B.
Wenn keine *.cfg Datei vorhanden ist kann es passieren, das dcc32.exe folgende Fehlermeldung bringt:
Code:
C:\TEMP\Test>dcc32 Project1
Borland Delphi Version 15.0
Copyright (c) 1983,2002 Borland Software Corporation
Project1.dpr(1) Fatal:
Unit not found: 'System.pas' or binary equivalents (
DCU,DPU)
Dann muß man den Suchpfad manuell als Parameter übergeben:
Code:
C:\TEMP\Test>dcc32 -UC:\Programme\Borland\Delphi7\Lib project1
Borland Delphi Version 15.0
Copyright (c) 1983,2002 Borland Software Corporation
Unit1.pas(32)
Project1.dpr(14)
48 lines, 0.34 seconds, 314324 bytes code, 7429 bytes data.
oder in die *.cfg folgende Zeile einfügen:
Code:
-UC:\Programme\Borland\Delphi7\Lib
Unit1.dcu: Die kompilierte
Unit (unit1.pas + unit1.dfm)
Project1.exe: Das kompilierte ausführbare Programm
Ruf mal dcc32 ohne Parameter auf, dann siehst Du eine Liste der möglichen Parameter:
Code:
C:\TEMP>dcc32
Borland Delphi Version 15.0
Copyright (c) 1983,2002 Borland Software Corporation
Syntax: dcc32 [options] filename [options]
-A<
unit>=<alias> = Set
unit alias -LU<
package> = Use
package
-B = Build all units -M = Make modified units
-
CC = Console target -N<path> =
DCU output directory
-CG =
GUI target -O<paths> = Object directories
-D<syms> = Define conditionals -P = look for 8.3 file names also
-E<path> = EXE output directory -Q = Quiet compile
-F<offset> = Find error -R<paths> = Resource directories
-GD = Detailed map file -U<paths> =
Unit directories
-GP = Map file with publics -V = Debug information in EXE
-GS = Map file with segments -VR = Generate remote debug (RSM)
-H = Output hint messages -W = Output warning messages
-I<paths> = Include directories -Z = Output 'never build' DCPs
-J = Generate .obj file -$<dir> = Compiler directive
-JP = Generate C++ .obj file --help = Show this help screen
-K<addr> = Set image base addr --version = Show name and version
Compiler switches: -$<letter><state> (defaults are shown below)
A8 Aligned record fields P+ Open string params
B- Full boolean Evaluation Q- Integer overflow checking
C+ Evaluate assertions at runtime R- Range checking
D+ Debug information T- Typed @ operator
G+ Use imported data references U- Pentium(tm)-safe divide
H+ Use long strings by default V+ Strict var-strings
I+ I/O checking W- Generate stack frames
J- Writeable structured consts X+ Extended syntax
L+ Local debug symbols Y+ Symbol reference info
M- Runtime type info Z1 Minimum size of enum types
O+ Optimization
C:\TEMP>
So ich hoffe ich habe Dir hiermit eine kleine Anleitung geben können.
Prinzipiell kann man mit dem dcc32 alles kompilieren, was auch die Delphi
IDE kann.
Wenn Dein Project1.dpr eine
DLL erstellt, dann wird dcc32 auch eine
DLL erstellen.
DCC32.EXE kann auch mit Projektgruppen umgehen, und so viele Programme nacheinander kompilieren.
Dazu muß man wissen, das Projektgruppen eigentlich nur makefiles sind. Ein Aufruf von
ruft nacheinander für jedes enthaltene Projekt dcc32 auf und kompiliert es.