Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Delphi Compiler Kommandozeile herausfinden (https://www.delphipraxis.net/211657-delphi-compiler-kommandozeile-herausfinden.html)

MyRealName 19. Okt 2022 10:53

Delphi Compiler Kommandozeile herausfinden
 
Wenn ich im Projekt-Manager ein Projekt auswähle, dann rechtsklick drauf und Build, dann wird ja der dcc32 angeworfen. Kann man rausfinden, mit welchem Aufruf inklusive der Kommandozeile das passiert ?

Hintergrund:

Wir müssen jetzt Unittests für alle Programme haben wir möchten im Post-Build-Event den Unittest erstellen, ausführen, auswerten und dann (wenn alles ok) deployen.

hoika 19. Okt 2022 11:08

AW: Delphi Compiler Kommandozeile herausfinden
 
Hallo,
hilft das hier?

https://stackoverflow.com/questions/...-as-in-the-ide

BTW:
In der IDE wurde auch der DCC32-Aufruf mal angezeigt,
ich finde den Schalter aber nicht mehr.

jaenicke 19. Okt 2022 11:15

AW: Delphi Compiler Kommandozeile herausfinden
 
Ich habe mal ein Tool dafür geschrieben, "Delphi Batch Compiler", aber das nicht weiter verfolgt, seit es msbuild dafür gibt. Ich kompiliere nun nur noch damit, so dass ich mich um die ganzen dcc32-Parameter nicht mehr kümmern muss.

Beispiel:
Code:
MSBuild "Example.dproj" /target:Build /p:config=Debug;Platform=Win32
Ich halte für den genannten Zweck das Post-Build Event allerdings für etwas fragwürdig. Normalerweise übernimmt das die Buildmaschine oder das Buildskript nach dem Erstellen des Projekts.

Uwe Raabe 19. Okt 2022 11:34

AW: Delphi Compiler Kommandozeile herausfinden
 
Wenn du das Build machst, sollte in den Meldungen im Ausgabe-Tab ungefähr sowas auftauchen:
Zitat:

Der Buildvorgang wurde am 19.10.2022 12:28:52 gestartet.
__________________________________________________
Projekt C:\Users\Uwe\Documents\Embarcadero\Studio\Projekte \Project972.dproj (Build-Ziel(e)):
BuildVersionResource-Ziel:
c:\program files (x86)\embarcadero\studio\22.0\bin\cgrc.exe -c65001 Project972.vrc -foProject972.res
CodeGear Resource Compiler/Binder
Version 1.2.2 Copyright (c) 2008-2012 Embarcadero Technologies Inc.

Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0

Copyright (C) Microsoft Corporation. All rights reserved.


Die Datei "Project972.vrc" wird gelöscht.
Die Datei "Project972.$manifest" wird gelöscht.
_PasCoreCompile-Ziel:
c:\program files (x86)\embarcadero\studio\22.0\bin\dcc32.exe -$O- -$W+ -$R+ -$Q+ --no-config -B -Q -TX.exe -AGenerics.Collections=System.Generics.Collections; Generics.Defaults=System.Generics.Defaults;WinType s=Winapi.Windows;WinProcs=Winapi.Windows;DbiTypes= BDE;DbiProcs=BDE;DbiErrs=BDE -DDEBUG;;FRAMEWORK_VCL -E.\Win32\Debug -I"c:\program files (x86)\embarcadero\studio\22.0\lib\Win32\debug\DE"; "c:\program files (x86)\embarcadero\studio\22.0\lib\Win32\debug";"U: \Install\TMS Scripter\packages\d11\.\Win32\Debug";"c:\program files (x86)\embarcadero\studio\22.0\lib\Win32\release\DE ";"c:\program files (x86)\embarcadero\studio\22.0\lib\Win32\release";C :\Users\Uwe\Documents\Embarcadero\Studio\22.0\Impo rts;"c:\program files (x86)\embarcadero\studio\22.0\Imports";C:\Users\Pu blic\Documents\Embarcadero\Studio\22.0\Dcp;"c:\pro gram files (x86)\embarcadero\studio\22.0\include";"C:\Program Files (x86)\Raize\CS5\Lib\RX11\Win32";C:\Users\Uwe\AppDa ta\Local\Programs\TestInsight\Source;"C:\Program Files (x86)\madCollection\madBasic\BDS22\win32";"C:\Prog ram Files (x86)\madCollection\madDisAsm\BDS22\win32";"C:\Pro gram Files (x86)\madCollection\madExcept\BDS22\win32";"C:\Pro gram Files (x86)\madCollection\madKernel\BDS22\win32";"C:\Pro gram Files (x86)\madCollection\madSecurity\BDS22\win32";"C:\P rogram Files (x86)\madCollection\madShell\BDS22\win32" -LEC:\Users\Public\Documents\Embarcadero\Studio\22. 0\Bpl -LNC:\Users\Public\Documents\Embarcadero\Studio\22. 0\Dcp -NU.\Win32\Debug -NSWinapi;System.Win;Data.Win;Datasnap.Win;Web.Win; Soap.Win;Xml.Win;Bde;System;Xml;Data;Datasnap;Web; Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.She ll; -O"c:\program files (x86)\embarcadero\studio\22.0\lib\Win32\release";C :\Users\Uwe\Documents\Embarcadero\Studio\22.0\Impo rts;"c:\program files (x86)\embarcadero\studio\22.0\Imports";C:\Users\Pu blic\Documents\Embarcadero\Studio\22.0\Dcp;"c:\pro gram files (x86)\embarcadero\studio\22.0\include";"C:\Program Files (x86)\Raize\CS5\Lib\RX11\Win32";C:\Users\Uwe\AppDa ta\Local\Programs\TestInsight\Source;"C:\Program Files (x86)\madCollection\madBasic\BDS22\win32";"C:\Prog ram Files (x86)\madCollection\madDisAsm\BDS22\win32";"C:\Pro gram Files (x86)\madCollection\madExcept\BDS22\win32";"C:\Pro gram Files (x86)\madCollection\madKernel\BDS22\win32";"C:\Pro gram Files (x86)\madCollection\madSecurity\BDS22\win32";"C:\P rogram Files (x86)\madCollection\madShell\BDS22\win32" -R"c:\program files (x86)\embarcadero\studio\22.0\lib\Win32\release\DE ";"c:\program files (x86)\embarcadero\studio\22.0\lib\Win32\release";C :\Users\Uwe\Documents\Embarcadero\Studio\22.0\Impo rts;"c:\program files (x86)\embarcadero\studio\22.0\Imports";C:\Users\Pu blic\Documents\Embarcadero\Studio\22.0\Dcp;"c:\pro gram files (x86)\embarcadero\studio\22.0\include";"C:\Program Files (x86)\Raize\CS5\Lib\RX11\Win32";C:\Users\Uwe\AppDa ta\Local\Programs\TestInsight\Source;"C:\Program Files (x86)\madCollection\madBasic\BDS22\win32";"C:\Prog ram Files (x86)\madCollection\madDisAsm\BDS22\win32";"C:\Pro gram Files (x86)\madCollection\madExcept\BDS22\win32";"C:\Pro gram Files (x86)\madCollection\madKernel\BDS22\win32";"C:\Pro gram Files (x86)\madCollection\madSecurity\BDS22\win32";"C:\P rogram Files (x86)\madCollection\madShell\BDS22\win32" -U"c:\program files (x86)\embarcadero\studio\22.0\lib\Win32\debug\DE"; "c:\program files (x86)\embarcadero\studio\22.0\lib\Win32\debug";"U: \Install\TMS Scripter\packages\d11\.\Win32\Debug";"c:\program files (x86)\embarcadero\studio\22.0\lib\Win32\release\DE ";"c:\program files (x86)\embarcadero\studio\22.0\lib\Win32\release";C :\Users\Uwe\Documents\Embarcadero\Studio\22.0\Impo rts;"c:\program files (x86)\embarcadero\studio\22.0\Imports";C:\Users\Pu blic\Documents\Embarcadero\Studio\22.0\Dcp;"c:\pro gram files (x86)\embarcadero\studio\22.0\include";"C:\Program Files (x86)\Raize\CS5\Lib\RX11\Win32";C:\Users\Uwe\AppDa ta\Local\Programs\TestInsight\Source;"C:\Program Files (x86)\madCollection\madBasic\BDS22\win32";"C:\Prog ram Files (x86)\madCollection\madDisAsm\BDS22\win32";"C:\Pro gram Files (x86)\madCollection\madExcept\BDS22\win32";"C:\Pro gram Files (x86)\madCollection\madKernel\BDS22\win32";"C:\Pro gram Files (x86)\madCollection\madSecurity\BDS22\win32";"C:\P rogram Files (x86)\madCollection\madShell\BDS22\win32" -V -VN -NBC:\Users\Public\Documents\Embarcadero\Studio\22. 0\Dcp -NHC:\Users\Public\Documents\Embarcadero\Studio\22. 0\hpp\Win32 -NO.\Win32\Debug Project972.dpr
Das Erstellen war erfolgreich.
0 Warnung(en)
0 Fehler
Vergangene Zeit 00:00:00.71
Da findest du die komplette Kommandozeile. Du kannst entweder nur die oder alles markieren und kopieren.

himitsu 19. Okt 2022 12:06

AW: Delphi Compiler Kommandozeile herausfinden
 
Aber statt dem DCC den MSBuild zu verwenden ist schon von Vorteil.

Da werden dann direkt die Optionen der .dproj benuzt und an den DCC übergeben, anstatt alles manuell an den DCC übergeben zu müssen.

hoika 19. Okt 2022 13:02

AW: Delphi Compiler Kommandozeile herausfinden
 
Hallo Uwe,
ich habe genau diese Ausgabe irgendwo deaktiviert,
finde aber den Schalter nicht ...

Uwe Raabe 19. Okt 2022 13:09

AW: Delphi Compiler Kommandozeile herausfinden
 
Tools - Optionen - IDE - Compilierung und Ausführung - Ausführlichkeit?

himitsu 19. Okt 2022 13:09

AW: Delphi Compiler Kommandozeile herausfinden
 
Ich wüsste garnicht, dass man die deaktivieren kann,
aber die ist standardmäßig zusammengefaltet und muß man im BuildLog erst doppelklicken.

Uwe Raabe 19. Okt 2022 13:10

AW: Delphi Compiler Kommandozeile herausfinden
 
Alternativ auch in demselben Optionsdialog - Befehlszeile anzeigen. Die wird dann aber im Tab Erzeugen angezeigt.

MyRealName 19. Okt 2022 13:47

AW: Delphi Compiler Kommandozeile herausfinden
 
Wenn der MSBuild das macht, dann bin ich es zufrieden. Es geht nur darum, dass ich es simple aufrufen kann. Das Problem ist ja, dass der Test eine eigene exe ist und ich nicht extra manuell nochmal übersetzen will, da kann ich das im PostBuild einsetzen mit meinem Packer und Jenkins-Anschubser.

Vielen Dank!

himitsu 19. Okt 2022 15:51

AW: Delphi Compiler Kommandozeile herausfinden
 
jupp, bei MSBuild gibst normal einfach nur noch mit an, welche Config und Platform (z.B. Debug und Win32) du bauen willst und die ganzen sonstigen Projektoptionen kommen aus der DPROJ.


MSBuild braucht zwar auch noch paar Sachen, aber die gibt es schon fertig (rsvars.bat)
Code:
call "C:\Program Files (x86)\Embarcadero\Studio\22.0\bin\rsvars.bat"
"%FrameworkDir%\MSBuild.exe" /t:Build /p:config=Debug /p:platform=Win32 MyProject.dproj
Code:
call "C:\Program Files (x86)\Embarcadero\Studio\22.0\bin\rsvars.bat"
"%FrameworkDir%\MSBuild.exe" /t:Build /p:config=Debug /target:Deploy /p:platform=iOSDevice64 MyProject.dproj



ich glaub die "parameter" gingen auch zusammen
Code:
"%FrameworkDir%\MSBuild.exe" /t:Build /p:config=Debug,platform=Win32 MyProject.dproj
und natürlich auch Release, Debug oder selbsterstellte Konfigurationen
Code:
/p:config=Release
wenn p:config und p:platform garnicht angegeben werden, dann nimmt es das, was du zuletzt im Projektmanager aktiviert hattest
(meißtens will man ja aber halt "immer" sicher etwas Bestimmtes machen, drum gibt man es an)

ich hatte mal Probleme, dass der Ausgabepfad nicht klappte, da kann man z.B. den dann auch noch mit angeben (oder einfach mal abweichend von der Config überschreiben)
Code:
/p:DCC_ExeOutput="..\_bin\MyProject.exe"
wer noch bissl aufräumen lassen will .... Clean, Build und ich glaub Compile .... halt was man alles auch über IDE/Projektmanager anstoßen kann
Code:
"%FrameworkDir%\MSBuild.exe" /t:Clean /t:Build /p:config=Debug ...
PS: nicht wundern \t: und \target: sind das Selbe ... k.A. warum es überall anders geschrieben wird,
also es geht z.B. auch
Code:
/target:Compile
/target:Build
/target:Clean,Build
/target:Clean,Build,Deploy

oder nur
/target:Clean

https://docwiki.embarcadero.com/RADS...MSBuild-Befehl

MyRealName 20. Okt 2022 07:30

AW: Delphi Compiler Kommandozeile herausfinden
 
Zitat:

Zitat von jaenicke (Beitrag 1513455)
Ich habe mal ein Tool dafür geschrieben, "Delphi Batch Compiler", aber das nicht weiter verfolgt, seit es msbuild dafür gibt. Ich kompiliere nun nur noch damit, so dass ich mich um die ganzen dcc32-Parameter nicht mehr kümmern muss.

Beispiel:
Code:
MSBuild "Example.dproj" /target:Build /p:config=Debug;Platform=Win32
Ich halte für den genannten Zweck das Post-Build Event allerdings für etwas fragwürdig. Normalerweise übernimmt das die Buildmaschine oder das Buildskript nach dem Erstellen des Projekts.

Wir haben keine Build-Maschine. Wir haben meist Java, wir haben einen Jenkins, der kann aber erstmal nur Java. Also habe ich ein Tool für das Post-Build-Event der Release-Version geschrieben, welches mir aus der aktuell compilierten Version ein ZIP-File baut, es auf einem Netzwerk-Laufwerk ablegt und dann Jenkins über REST Bescheid sagt, dass er das Deployment machen soll.
Was jetzt dazu kommen soll ist einfach ein Schritt vor dem Zip und zwar den Test bauen und ausführen und nur dann weiter machen, wenn dieser vollständig erfolgreich durchlief.

himitsu 20. Okt 2022 10:32

AW: Delphi Compiler Kommandozeile herausfinden
 
Wir nutzen FinalBuilder.

Im ersten Schritt hatte ich den inzwischen so geändert, dass er auch als Konsole laufen kann, mit Steuerung über Parameter, anstatt Dialog
Und nun auch die alten Delphi-Compiler-Actions zum Großteil durch MSBuild-Actions ersetzt.
Allerdings fummle ich im BeforeScript noch an den Actions rum, z.B. um via Dialog zentral die Delphi-Version und Config ändern zu können.

und es gäbe von denen auch ein
Continua CI

jaenicke 20. Okt 2022 11:03

AW: Delphi Compiler Kommandozeile herausfinden
 
Zitat:

Zitat von MyRealName (Beitrag 1513510)
Wir haben keine Build-Maschine. Wir haben meist Java, wir haben einen Jenkins, der kann aber erstmal nur Java.

Jenkins kann sehr gut mit msbuild Delphi-Projekte erstellen. Das habe ich vor 10 Jahren schon selbst eingerichtet und läuft problemlos.

MyRealName 20. Okt 2022 12:00

AW: Delphi Compiler Kommandozeile herausfinden
 
Dasw ist bei uns in der Firma alles ein bissl politisch. Schön wäre das schon mit Jenkins und msbuild.. ich frag mal rum.. Die sind alle etwas Java-fixiert hier :p

himitsu 20. Okt 2022 12:13

AW: Delphi Compiler Kommandozeile herausfinden
 
Abgesehn, davon dass du im Jenkins irgendwo ein Windows verfügbar haben mußt, damit der Delphi-Compiler da laufen kann
und für Java z.B. auch Linux reichen würde,
sollte Beides zusammen darin auch gleichzeitig nutzbar sein.



Zeig einfach, dass Delphi und Java fast zusammengehören ... guter Grund sich nicht mehr so dagegen zu wehren.
https://www.google.de/maps/dir/Java,...2!8j1666271580

OK, alles ist relativ (wie da jemand mal so sagte)
https://www.google.de/maps/dir/Java,...7!2d38.4800567


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz