AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Reihenfolge Pre-Build-Script und brcc32
Thema durchsuchen
Ansicht
Themen-Optionen

Reihenfolge Pre-Build-Script und brcc32

Ein Thema von Codehunter · begonnen am 15. Jun 2021 · letzter Beitrag vom 17. Jun 2021
Antwort Antwort
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

Reihenfolge Pre-Build-Script und brcc32

  Alt 15. Jun 2021, 13:54
Hallo!

Ich habe folgendes Problem: In einer Batchdatei stelle ich diverse Dateien zusammen, die final per IZArc in eine ZIP gepackt werden. Diese Batchdatei habe ich in den Projektoptionen als Pre-Build-Befehl angegeben. Die ZIP-Datei, die von dieser Batch erzeugt wird, ist wiederum bei Resourcen und Bilder als RCDATA angegeben.

Dummerweise scheint es so als würde Delphi zuerst die Resourcen kompilieren die in der .dproj stehen und danach erst den Pre-Build-Befehl ausführen.

In der Konsequenz muss ich jedes Kompilieren doppelt ausführen, weil ja beim ersten Durchlauf noch eine veraltete ZIP-Datei einkompiliert und dann erst eine neue erstellt wird.

Lässt sich das irgendwie anders lösen? Außer das gesamte Projekt außerhalb der IDE per Batch zu kompilieren. Das wäre eher kontraproduktiv. Bei der Entwicklung nutze ich schon gern mal STRG-F9.

Grüße
Cody
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.079 Beiträge
 
Delphi 12 Athens
 
#2

AW: Reihenfolge Pre-Build-Script und brcc32

  Alt 15. Jun 2021, 14:59
brcc32?
Kompilierst "du" nun die Ressource, oder lässt du es über {$R x.res x.rc} in der *.dpr kompilieren?

nur in *.RC (oder Projektopnen) angegeben und automatisch die *.RES erstellen lassen, ja das kommt vor dem BuildEvent.

Die *.RES aus einer *.RC selber erstellen ... Ressourcen werden erst nach dem Compilieren ins Compilat gelinkt. (sollte also so gehn)




Aber was wann, das kannst du selbst nachsehn.
* in der *.DRPOJ gibt es <IMPORTS> und darin steht was gemacht wird.
* so werden z.B. die $(BDS)\bin\CodeGear.Delphi.Targets und $(BDS)\bin\CodeGear.Common.Targets verwendet und darin findet man Folgendes:

Zitat:
<CoreBuildDependsOn>

_CheckBuildEnvironment;
_CheckPlatformVariable;
_CheckGetItPackageDependencies;
_CheckPlatformSDK;
CreateDirectories;
ResolveFiles;
BuildClassesDex;
BuildVersionResource;
BuildAndroidServiceJarFile;
BuildAndroidManifestList;
ResourceBuild;
$(_PreCompileTargets);
PreBuildEvent;
_PreOutputTimeStamp;
_RunUserTools;
RidlCompile;
_PasCoreCompile;
_PostOutputTimeStamp;
PostBuildEvent;
$(_PostCompileTargets);
_DeleteLnkFile;
<!-- GeniOSDevice32Outputs; -->
GenAndroid32Outputs

</CoreBuildDependsOn>
Achtung, beim Upgrade der DPROJ von einer alten Delphi-Version, kann bei den Imports was kaputt geh, bzw. alt bleiben,
da das mit dem automatischen ProjectUpgrade nicht wirklich richtig funktioniert.


Der Inline-Compiler könnte zwar bissl anders arbeiten, als MSBUILD, aber im Großen und Ganzen hoffe ich, der arbeitet genauso, wie es in der DPROJ definiert wurde.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (15. Jun 2021 um 17:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

Registriert seit: 15. Sep 2008
Ort: Dubai
681 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Reihenfolge Pre-Build-Script und brcc32

  Alt 15. Jun 2021, 15:04
Ich habe vor Jahren mal sowas änliches gemacht. Um mich nicht mit Ressourcen rumärgern zu müssen landete alles als const arrays in einer unit.
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Reihenfolge Pre-Build-Script und brcc32

  Alt 17. Jun 2021, 09:34
Ich lasse kompilieren. Zwar hatte ich auch schon darüber nachgedacht, einen entsprechenden Eintrag in meiner Batch zu ergänzen, aber am Problem würde das nichts ändern. Wie gesagt, im Moment sähe ich nur die Möglichkeit, auf das Kompilieren in der IDE komplett zu verzichten und alles per Batch zu machen. Aber das wäre bei der Fehlersuche schon ziemlich ätzend.

Kurz gesagt irritiert mich die Bezeichnung "Pre-Build-Ereignis" in den Projektoptionen. Denn defakto ist das nicht "Pre-Build" sondern irgendwo mittendrin, zwischen dem Kompilieren der Ressourcen und dem Kompilieren der Quellen. Ist das ein Bug in der IDE? War das schon immer so? Oder mache ich nur einen Denkfehler?
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.079 Beiträge
 
Delphi 12 Athens
 
#5

AW: Reihenfolge Pre-Build-Script und brcc32

  Alt 17. Jun 2021, 12:25
Gut, hier lasse ich die Ressourcen vom FinalBuilder generieren.
* die .RC mit der VersionsInfo bzw. Manifest aus je einer Vorlage, mit ersetzten Variablen/Platzhaltern
* eine .INC mit Konstanten (Versionsinfo, Name+CommitID+Datum der verwendeten GitBranches)
* das wird direkt zu einer .RES kompiliert, bevor das eigentliche Kompilieren der Delphi-Projekte startet
* und das Gemeinsame muß hier auch vorkompiliert werden, da anschließend ein großer Teil der DPROJ (DPR/DPK) multithreaded gleichzeitig kompiliert wird

sieht dann in etwa so aus:
Code:
"C:\Program Files (x86)\Embarcadero\Studio\*****\bin\rsvars.bat
"%BDS%\bin\rc.exe" -fo"S:\*****\VersionInfoEXE.res" S:\*****\VersionInfo.rc
"%BDS%\bin\rc.exe" -fo"S:\*****\VersionInfoSRV.res" /d _SRV S:\*****\VersionInfo.rc
"%BDS%\bin\rc.exe" -fo"S:\*****\VersionInfoDLL.res" /d _DLL S:\*****\VersionInfo.rc
"%BDS%\bin\rc.exe" -fo"S:\*****\VersionInfoBPL.res" /d _BPL S:\*****\VersionInfo.rc
"%BDS%\bin\dcc32.exe" ....
...
Wie wäre es also mit sowas, bei dir?
Code:
machwas.exe "$(INPUTDIR)\XYZ.rc"
"$(BDS)\bin\rc.exe" -fo"$(INPUTDIR)\XYZ.res" "$(INPUTDIR)\XYZ.rc"

Ob mit brcc32.exe oder rc.exe ist Geschmackssache.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (17. Jun 2021 um 12:31 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz