Inkrementelle Builds
Moderator: Moderatoren
-
- Rekursionen-Architekt
- Beiträge: 164
- Registriert: Mo, 09. Jan 2006 17:06
- Wohnort: Paderborn
- Hat sich bedankt: 2 Mal
- Kontaktdaten:
Inkrementelle Builds
Hallo,
ich habe meine neue Entwicklungsmaschine als virtuelle Maschine mit Windows 10 aufgesetzt.
Entwicklungsumgebung ist (noch) Xbase++ 1.9SL (355).
Seit ich auf dieser neuen Umgebung arbeite, wird bei jeder kleinen Änderung ein kompletter Build durchgeführt, egal ob ich in VX 'Build meine.exe' (Strg+F9) oder 'Build Project' (Alt+F9) oder 'Rebuild Project' auswähle. Das dauert zwar nur eine knappe Minute, ist aber trotzdem nervig, weil auf meinem altem System (das war noch XP) immer nur die geänderten .prg-Dateien neu kompiliert wurden und der Buildvorgang damit wesentlich schneller war.
Auf der Konsole ist es noch schlimmer, da werden immer die include-Dateien mit compiliert, dann dauert ein Build auch schon mal 4 Minuten....
Ich habe auch schon 'Rebuild Dependencies' und 'Clean Project' versucht, das hat aber nichts gebracht.
Gibt es irgendwo eine Einstellung für Inkrementelle Builds oder was sonst kann hier die Ursache sein?
Viele Grüße
Hans
ich habe meine neue Entwicklungsmaschine als virtuelle Maschine mit Windows 10 aufgesetzt.
Entwicklungsumgebung ist (noch) Xbase++ 1.9SL (355).
Seit ich auf dieser neuen Umgebung arbeite, wird bei jeder kleinen Änderung ein kompletter Build durchgeführt, egal ob ich in VX 'Build meine.exe' (Strg+F9) oder 'Build Project' (Alt+F9) oder 'Rebuild Project' auswähle. Das dauert zwar nur eine knappe Minute, ist aber trotzdem nervig, weil auf meinem altem System (das war noch XP) immer nur die geänderten .prg-Dateien neu kompiliert wurden und der Buildvorgang damit wesentlich schneller war.
Auf der Konsole ist es noch schlimmer, da werden immer die include-Dateien mit compiliert, dann dauert ein Build auch schon mal 4 Minuten....
Ich habe auch schon 'Rebuild Dependencies' und 'Clean Project' versucht, das hat aber nichts gebracht.
Gibt es irgendwo eine Einstellung für Inkrementelle Builds oder was sonst kann hier die Ursache sein?
Viele Grüße
Hans
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2936
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 68 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Inkrementelle Builds
Normal werden nur geänderte Dateien neu kompiliert.
Wenn ab er eine CH Datei geändert wird, auf die viele Dateien verweisen, und diese geändert wird, dann werden alle abhängigen auch kompiliert.
Projektdatei auf falsche Querverweise prüfen ...
Wenn ab er eine CH Datei geändert wird, auf die viele Dateien verweisen, und diese geändert wird, dann werden alle abhängigen auch kompiliert.
Projektdatei auf falsche Querverweise prüfen ...
Gruß
Hubert
Hubert
-
- Rekursionen-Architekt
- Beiträge: 164
- Registriert: Mo, 09. Jan 2006 17:06
- Wohnort: Paderborn
- Hat sich bedankt: 2 Mal
- Kontaktdaten:
Re: Inkrementelle Builds
Hallo,
vielen Dank für die Hinweise.
Es werden bei einer Änderung in einer .prg-Datei immer noch alle Dateien neu kompiliert.
Muss wohl noch weiter suchen....
Viele Grüße
Hans
vielen Dank für die Hinweise.
Das würde ich ausschließen, denn dann gibt es beim Build eine FehlermeldungWolfgang Ciriack hat geschrieben:Eine fehlende ch-Datei.
Ich habe jetzt die Projektdatei komplett neu aufgebaut, wie es in der Hilfe beschrieben ist, aber leider hat es nichts geändert.brandelh hat geschrieben:Projektdatei auf falsche Querverweise prüfen ...
Es werden bei einer Änderung in einer .prg-Datei immer noch alle Dateien neu kompiliert.
Muss wohl noch weiter suchen....
Viele Grüße
Hans
- Jan
- Marvin
- Beiträge: 14659
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Inkrementelle Builds
Ich kann das Problem bestätigen, ich hatte das auch mal. Aber ... leider weiß ich nicht mehr wie ich das gelöst hatte ... Such doch mal hier im Forum.
Jan
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 68 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Inkrementelle Builds
zeig doch mal die PRAGMA / INCLUDE Zeilen dieser Datei (mit Namen) und die Projektdatei als Quellcode.
Kann es sein, dass eine PRE Routine die OBJ-Dateien löscht ?
Kann es sein, dass eine PRE Routine die OBJ-Dateien löscht ?
Gruß
Hubert
Hubert
-
- Rekursionen-Architekt
- Beiträge: 164
- Registriert: Mo, 09. Jan 2006 17:06
- Wohnort: Paderborn
- Hat sich bedankt: 2 Mal
- Kontaktdaten:
Re: Inkrementelle Builds
Ich hab' natürlich zuerst im Forum gesucht, aber nichts Hilfreiches gefunden....Jan hat geschrieben:Ich kann das Problem bestätigen, ich hatte das auch mal. Aber ... leider weiß ich nicht mehr wie ich das gelöst hatte ... Such doch mal hier im Forum.
Jan
Nein, eine PRE-Routine gibt es nicht.brandelh hat geschrieben:Kann es sein, dass eine PRE Routine die OBJ-Dateien löscht ?
Die .xpj-Datei ist ziemlich umfangreich:
Code: Alles auswählen
[PROJECT]
DEBUG = yes
POST_BUILD = copy xmig.exe N:\tpw\bin32\tpx\bin\xmig.exe /y
VERSION = 2.0
OPENFILES = KDSPBRO.PRG
PROJECT.XPJ
[PROJECT.XPJ]
XMIG.exe
[XMIG.exe]
COMPILE = xpp
COMPILE_FLAGS = /a /ukxnew.ch /v /w /d_TPXMIG
DEBUG_SAVE = yes
GUI = yes
LINKER = alink
LINK_FLAGS =
RC_COMPILE = arc
RC_FLAGS = /v
OBJ_DIR = .\OBJ
RUNPARAMETER = "XX\\$2710\\$2XX\\$2XX\\$2PADERBORN"
WORKINGDIR = N\\$2\TPW\Bin32\Tpx\Bin
HOSTPROCESS = N\\$2\TPW\Bin32\Tpx\Bin\XMIG.EXE
// $START-AUTODEPEND
STD.CH
SET.CH
NATMSG.CH
GET.CH
PROMPT.CH
MEMVAR.CH
COLLAT.CH
TPXKONST.CH
FONT.CH
DCDIALOG.CH
XBP.CH
GRA.CH
DCREG.CH
KINI.CH
KMODULES.CH
APPEVENT.CH
KLIB.CH
KFKEYS.CH
COMMON.CH
NLS.CH
DLL.CH
OS.CH
KDATE.CH
DCBITMAP.CH
XINI.CH
XINI2.CH
KNETSYS.CH
TOOLBAR.CH
XDISPO.CH
ERROR.CH
XB2.CH
XBTDISK.CH
DCICON.CH
DCMSG.CH
DCTREE.CH
DCCOLOR.CH
SETCURS.CH
MEMOEDIT.CH
ACHOICE.CH
INKEY.CH
FILEIO.CH
ADSDBE.CH
DMLB.CH
DAC.CH
ADS.CH
KOMENU.CH
KREGIST.CH
THREAD.CH
APPBROW.CH
APP.CH
DCPICK.CH
DCCURSOR.CH
DC3P.CH
KAWK.obj
KBROWSE.obj
KDATE.obj
KDSPBRO.obj
KERRSYS.obj
KFKEYS.obj
KINIAPPL.obj
KINISYS.obj
KLIB.obj
KMODULES.obj
KNETLIB.obj
KNETSYS.obj
KOMENU.obj
KPATHIFC.obj
KREGIST.obj
KRTMBRO.obj
KSIMPLE.obj
KSTATUS.obj
KTOOLBAR.obj
KTOOLTIP.obj
KUSER.obj
XBASE.obj
XBATCH.obj
XBATKRNL.obj
XBETKAL.obj
XDISPO.obj
XDSPMDFY.obj
XGRUPPEN.obj
XHELP.obj
XKABINEN.obj
XLOWLEVL.obj
XLPOS.obj
XMITARB.obj
XOPEN.obj
XPARA.obj
XPATIENT.obj
XPLANUNG.obj
XPRTRANS.obj
XRESLOC.obj
XRESTYP.obj
XSTPLAN.obj
XTERMINE.obj
XTHESAU.obj
XWEGE.obj
XWRKMAIN.obj
// $STOP-AUTODEPEND
OBJ\XDSPKRNL.OBJ
RES\XMIG.RES
KAWK.PRG
KBROWSE.PRG
KDATE.PRG
KDSPBRO.PRG
KERRSYS.PRG
KFKEYS.PRG
KINIAPPL.PRG
KINISYS.PRG
KLIB.PRG
KMODULES.PRG
KNETLIB.PRG
KNETSYS.PRG
KOMENU.PRG
KPATHIFC.PRG
KREGIST.PRG
KRTMBRO.PRG
KSIMPLE.PRG
KSTATUS.PRG
KTOOLBAR.PRG
KTOOLTIP.PRG
KUSER.PRG
XBASE.PRG
XBATCH.PRG
XBATKRNL.PRG
XBETKAL.PRG
XDISPO.PRG
XDSPMDFY.PRG
XGRUPPEN.PRG
XHELP.PRG
XKABINEN.PRG
XLOWLEVL.PRG
XLPOS.PRG
XMITARB.PRG
XOPEN.PRG
XPARA.PRG
XPATIENT.PRG
XPLANUNG.PRG
XPRTRANS.PRG
XRESLOC.PRG
XRESTYP.PRG
XSTPLAN.PRG
XTERMINE.PRG
XTHESAU.PRG
XWEGE.PRG
XWRKMAIN.PRG
Hans
- Jan
- Marvin
- Beiträge: 14659
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Inkrementelle Builds
Eventuell gibt es auf dem neuen Rechner irgendwelche Probleme mit Schreibrechten der temporären Dateien. Dann kann der zwar aktuell kompilieren, aber beim nächsten Durchlauf findet der die notwendigen Infos nicht mehr.
Oder der Timestamp irgendwelcher Dateien stimmt nicht. Dann sieht der Compiler die Dateien als zu neu an, ist irritiert, interpretiert das komisch, und kompiliert sicherheitshalber neu.
Jan
Oder der Timestamp irgendwelcher Dateien stimmt nicht. Dann sieht der Compiler die Dateien als zu neu an, ist irritiert, interpretiert das komisch, und kompiliert sicherheitshalber neu.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21211
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Inkrementelle Builds
Hallo Hans,
ich glaube das Problem kommt mir bekannt vor. Ich hatte das auch mit einem größeren Projekt. Ich überlege schon die ganze Zeit, was ich geändert habe, damit es wieder klappt. Ich weiß noch es war was ganz blödes. Hilft Dir jetzt auch nicht weiter, aber es könnte ja beruhigen. Ich gehe noch mal in mich, vielleicht fällt es mir wieder ein. Ich meine aber es hing mit den INCLUDE Dateien zusammen. Selbstgebaute natürlich.
ich glaube das Problem kommt mir bekannt vor. Ich hatte das auch mit einem größeren Projekt. Ich überlege schon die ganze Zeit, was ich geändert habe, damit es wieder klappt. Ich weiß noch es war was ganz blödes. Hilft Dir jetzt auch nicht weiter, aber es könnte ja beruhigen. Ich gehe noch mal in mich, vielleicht fällt es mir wieder ein. Ich meine aber es hing mit den INCLUDE Dateien zusammen. Selbstgebaute natürlich.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 68 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Inkrementelle Builds
zuerst, mein PRE war aus dem Kopf und damit ist das gemeint:
POST_BUILD
Aber sieh dir mal an, was hinter der EXE als compilerschalter steht :
/a => gesamtes Projekt übersetzen !!!
das verwende ich nur dann, wenn ich die endgültige Version ausliefere
POST_BUILD
Aber sieh dir mal an, was hinter der EXE als compilerschalter steht :
Code: Alles auswählen
COMPILE_FLAGS = /a /ukxnew.ch /v /w /d_TPXMIG
das verwende ich nur dann, wenn ich die endgültige Version ausliefere
Gruß
Hubert
Hubert
-
- Rekursionen-Architekt
- Beiträge: 164
- Registriert: Mo, 09. Jan 2006 17:06
- Wohnort: Paderborn
- Hat sich bedankt: 2 Mal
- Kontaktdaten:
Re: Inkrementelle Builds
Hallo Hubert,
/a in der Projekt-Datei steht für 'automatic Memvar-Declaration'
Wenn ich den herausnehme, werden mir zwar einige nicht deklarierte Variablen angezeigt (was auch nicht schlecht ist...), aber es wird immer noch alles compiliert.
Viele Grüße
Hans
zuerst habe ich gedacht, Du hast die Ursache gefunden - ist aber leider nicht so.brandelh hat geschrieben: /a => gesamtes Projekt übersetzen !!!
/a in der Projekt-Datei steht für 'automatic Memvar-Declaration'
Wenn ich den herausnehme, werden mir zwar einige nicht deklarierte Variablen angezeigt (was auch nicht schlecht ist...), aber es wird immer noch alles compiliert.
Das habe ich auch schon gedacht und das Temp-Verzeichnis vom Standard (%USERPROFILE%\AppData\Local\Temp) nach c:\temp verlegt, dort habe ich garantiert Schreibrechte. Hat aber auch nichts gebracht.Jan hat geschrieben:Eventuell gibt es auf dem neuen Rechner irgendwelche Probleme mit Schreibrechten der temporären Dateien.
Viele Grüße
Hans
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 68 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Inkrementelle Builds
Peinlich peinlich, das /a habe ich mit dem PBUILD /a verwechselt ...
aber was mir in der Zeile dennoch auffällt:
COMPILE_FLAGS = /a /ukxnew.ch /v /w /d_TPXMIG
du verwendest eine eigene STD.CH ...
wenn diese kxnew.ch geändert wird (Datum/Uhrzeit), muss er (da sie ja in jede eingebunden wird) auch alles neu kompilieren.
aber was mir in der Zeile dennoch auffällt:
COMPILE_FLAGS = /a /ukxnew.ch /v /w /d_TPXMIG
du verwendest eine eigene STD.CH ...
wenn diese kxnew.ch geändert wird (Datum/Uhrzeit), muss er (da sie ja in jede eingebunden wird) auch alles neu kompilieren.
Gruß
Hubert
Hubert