Bonjour à toute l'équipe des experts Delphi. Existe il de la doc récente sur la compilation en ligne de commande
Bonjour à toute l'équipe des experts Delphi. Existe il de la doc récente sur la compilation en ligne de commande
En dehors du -h, il n'y avait pas grand chose à ma dernière recherche DCC64 - F2046 Out of memory quand j'ai remarqué que DCC64 était une application 32 Bits tout comme l'IDE de la 10.0 mais qui par chance est compilé avec le flag 3Go.
Tu veux savoir quoi de précis ?
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !![]()
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
J'essaie de comprendre comment fonctionne FinalBuilder qui permet de générer des exe Delphi chez un de mes clients.
Je voulais savoir comment utiliser le compilateur en ligne
FinalBuilder, ah oui, je l'ai utilisé en D3, D5 et D7 puis en BCBXE3, cela fonctionnait très bien, très pratique pour automatiser
- la synchro des sources, c'était aussi bien depuis SourceSafe, JEDI VCS, SVN ...
- la construction et gérer les versions
- archivage des sources
- InstallShield et autre outil du genre.
As-tu un problème spécifique ?
Non parce qu'en dehors d'écrire son BAT pour compiler son projet, c'est juste les options du projet traduites en paramètre, il n'y a pas grand chose à ajouter à l'aide intégrée et se référer ensuite à l'aide de "Options de Projet" pour comprendre la partie Compilateur, Liaison et ressources.
Pour le compilateur en ligne, Delphi montre la ligne de commande lors de la compilation, un truc genre
Code BAT : Sélectionner tout - Visualiser dans une fenêtre à part "C:\Program Files (x86)\Embarcadero\Studio\17.0\bin\dcc64.exe" -B -Q -DRELEASE -$D0 -$L- -$Y- -H -W -B -R"C:\Program Files (x86)\Embarcadero\Studio\17.0\lib\Win64\release" -NSSystem.Win;System;Winapi;Vcl; -E..\bin\ -NU..\dcu\RELEASE\ -K00400000 getDCU.dpr
Souvent, c'est les chemin que l'on cherche à changer, plus l'application est complexe, plus il faut ajouter de namespace et de dépendance avec -I
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !![]()
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
Théoriquement 8Ko, vu que je ne compile que des bibliothèques en ligne de commande, je peux pas trop dire, je n'ai pas encore eu l'occasion d'avoir la chaine de compilation en main sur le produit que notre R&D s'occupe, je suis surtout sur du bench plutôt que sur la partie prod, même mon responsable ne s'en occupe pas, cela n'a pas du bouger depuis XE10 et le passage en 64Bits d'une grande partie des projets, d'ailleurs dépendance par chemin, aucune bibliothèque installée, 95% en service Windows donc une compilation moins lié à des lib visuels.
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !![]()
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
tu peux rendre les choses plus lisibles avec des variables
Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 @echo off set RAD=C:\Program Files (x86)\Embarcadero\Studio\22.0 set BRC="%RAD%\bin\brcc32.exe" set DCC="%RAD%\bin\dcc32.exe" set NS=Winapi;System.Win;System;Vcl;Vcl.Imaging;Vcl.Samples;VCLTee;Data;Soap;BDE set LIB=..\lib;\Indy\Lib\Core;\Indy\Lib\Protocols;\Indy\Lib\System %BRC% Resource.rc %DCC% Projet1.dpr -$O+ -NS%NS% -U%LIB% -Q -GD
Comme le mentionne Paul, on arrive tous à peu près à la même chose avec des variables
plus lisible cependant c'est pas forcément toujours le cas
la ligne de commande MakeGSP.D10.bat /bds /d est celle que j'utilise dans mon cas pour compiler une lib que seul le BDS compile mais pas BCC.
MakeGSP.D10.bat contient
Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200 @echo off chcp 1252 rem variables globales set ExitCode=0 set DebugMode=0 set BuildByBDS=0 set CompilerBit=64 rem Check Parameters if /i "%1" == "/?" goto ShowHelp if /i "%1" == "/h" goto ShowHelp if /i "%1" == "/help" goto ShowHelp if /i "%1" == "/d" set DebugMode=1 if /i "%2" == "/d" set DebugMode=1 if /i "%1" == "/bds" set BuildByBDS=1 if /i "%2" == "/bds" set BuildByBDS=1 if /i "%1" == "/32" set CompilerBit=32 if /i "%2" == "/32" set CompilerBit=32 rem Check DebugMode if %DebugMode% EQU 1 ( set Config=DEBUG set Options=-$D+^ -$L+^ -$O-^ -$W+^ ) else ( set Config=RELEASE set Options=-$D0^ -$L-^ -$Y-^ ) rem Check Delphi echo Make DCU of GSQLParser for Delphi 10 Seatle set DelphiRoot=C:\Program^ Files^ (x86)\Embarcadero\Studio\17.0 set DelphiCompiler="%DelphiRoot%\bin\dcc%CompilerBit%.exe" set DelphiBuilder=msbuild.exe set DelphiIDEBuilder="%DelphiRoot%\bin\bds.exe" set DelphiLib="%DelphiRoot%\lib\Win%CompilerBit%\release" set DCUPath=..\dcu\%Config%\ echo - Delphi Compiler if %BuildByBDS% EQU 1 ( if exist %DelphiIDEBuilder% ( echo - Delphi Compiler IDE - OK : %DelphiIDEBuilder%. ) else ( echo * KO * Delphi Compiler IDE not found on expected path : %DelphiIDEBuilder% ! set ExitCode=00000001 goto Abort ) ) else ( if exist %DelphiCompiler% ( echo - Delphi Compiler %CompilerBit% - OK : %DelphiCompiler%. ) else ( echo * KO * Delphi Compiler %CompilerBit% bit not found on expected path : %DelphiCompiler% ! set ExitCode=00000001 goto Abort ) ) rem Check INC Files echo - GSQLParser Compiler Defines copy /y ..\gsp_vcl\GSqlparserCompilerDefines.inc .\GSqlparserCompilerDefines.inc >nul if exist .\GSqlparserCompilerDefines.inc ( echo - GSQLParser Compiler Defines - OK : GSqlparserCompilerDefines.inc copied. ) else ( echo * KO * GSQLParser Compiler Defines : GSqlparserCompilerDefines.inc not copy for make ! set ExitCode=00000011 goto Abort ) rem Compiler echo - GSQLParser DCU if exist %DCUPath% ( echo - GSQLParser DCU - Check if exist %DCUPath%*.dcu ( echo - GSQLParser DCU - Check: Clean del /q %DCUPath%*.dcu echo - GSQLParser DCU - Check: Clean - OK ) else ( echo - GSQLParser DCU - Check: Empty - OK ) ) else ( mkdir %DCUPath% echo - GSQLParser DCU - Create Directory - OK ) if exist .\LastMake.%Config%.txt ( echo - GSQLParser Last Make: Clean del .\LastMake.%Config%.txt echo - GSQLParser Last Make: Clean - OK ) if exist .\LastMake.%Config%.Errors.txt ( echo - GSQLParser Last Make Errors: Clean del .\LastMake.%Config%.Errors.txt echo - GSQLParser Last Make Errors: Clean - OK ) echo - GSQLParser Compile %Config% rem -B = Construire toutes les unités rem -CC = Cible console rem -CG = Cible GUI rem -Q = Compilation silencieuse rem --no-config = ne pas charger le fichier dcc64.cfg par défaut rem -D<syms> = Définir conditionnels rem -R<chemins> = Répertoires ressources rem -E<chemin> = Répertoire de sortie EXE/DLL rem -NU<chemin> = répertoire de sortie de l'unité .dcu rem -NS<espaces de nommage> = Chemin de recherche des espaces de nommage rem -K<addr> = Adresse de base image rem -W[+|-|^][warn_id] = Afficher les messages d'avertissement rem -$ Options du compilateur : -$<lettre><état> (voir défauts ci-dessous) rem -$O- Optimisations désactivées rem -$W+ Générer cadre de pile - systématique même si non nécessaire rem -$D0 Informations de débogage désactivées rem -$L- Symboles débogage locaux désactivés rem -$Y- Aucune Info référence symbole rem Redirecting error messages from Command Prompt: STDERR/STDOUT : &1 command to redirect the output for STDERR to STDOUT if %BuildByBDS% EQU 1 ( echo - GSQLParser Compile %Config% - KILL rem taskkill /f /im bds.exe 2> NUL taskkill /f /im BDSWrapper.exe 2> NUL echo - GSQLParser Compile %Config% - RUN IDE rem %DelphiIDEBuilder% -ns -b -oLastMake.%Config%.Errors.txt getDCU.dproj %CD%\BDSWrapper\BDSWrapper.exe -bds:%DelphiIDEBuilder% -p:%CD%\getDCU.dproj -d:%Config% rem if errorlevel 1 ( rem echo - GSQLParser Compile %Config% - ERROR rem set ExitCode=00000101 rem goto Abort rem ) rem echo - GSQLParser Compile %Config% - SUCCESS ) else ( echo - GSQLParser Compile %Config% - RUN %DelphiCompiler% -B -Q -D%Config% %Options% -H -W -R%DelphiLib% -NSSystem.Win;System;Winapi;Vcl; -E..\bin\ -NU%DCUPath% -K00400000 getDCU.dpr >.\LastMake.%Config%.txt 2>.\LastMake.%Config%.Errors.txt ) rem Erase INC Files echo - GSQLParser Compiler Defines Clean del .\GSqlparserCompilerDefines.inc rem Copy DCU echo - GSQLParser DCU - Copy if exist ..\..\*.dcu ( echo - GSQLParser DCU - Copy - Clean Dest del /q ..\..\*.dcu echo - GSQLParser DCU - Copy - Clean Dest - OK ) else ( echo - GSQLParser DCU - Copy - Empty Dest ) if exist %DCUPath%*.dcu ( echo - GSQLParser DCU - Copy To Dest copy %DCUPath%*.dcu ..\..\*.dcu echo - GSQLParser DCU - Copy To Dest - OK ) else ( echo * KO * GSQLParser DCU - Copy - NO FILES set ExitCode=00001001 goto Abort ) for /f %%a in ('dir /a:-d /s /b %DCUPath% ^|find /C /V ""') do set DCUCount=%%a echo - GSQLParser DCU - Copy To Dest - Build %DCUCount% DCU Files if %DCUCount% EQU 55 ( echo - GSQLParser DCU - Copy To Dest - ALL BUILD ) else ( echo - GSQLParser DCU - Copy To Dest - INCOMPLETE ) :End pause exit /b :Abort echo * KO * Aborted ExitCode: %ExitCode% pause exit /b :ShowHelp echo Make GSQLParser for Delphi 10 Seatle echo. /? ou /h ou /help show this help content echo. /d compile en DEBUG (Directive, Informations de débogage et Symboles débogage locaux) sinon par défaut en RELEASE echo. /bds passe par bds.exe pour l'encapsulation de DCC64.exe qui dépasse la limite de 2Go de RAM utilisée echo. echo. echo.
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !![]()
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
Partager