Inkrementelle Builds

Xbase++-IDE - Workbench, Visual Xbase

Moderator: Moderatoren

Inkrementelle Builds

Beitragvon hschmidt » Di, 22. Mär 2016 13:33

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
hschmidt
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 157
Registriert: Mo, 09. Jan 2006 17:06
Wohnort: Paderborn

Re: Inkrementelle Builds

Beitragvon Wolfgang Ciriack » Di, 22. Mär 2016 18:43

Eine fehlende ch-Datei.
Viele Grüße
Wolfgang
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 2227
Registriert: Sa, 24. Sep 2005 8:37
Wohnort: Berlin

Re: Inkrementelle Builds

Beitragvon brandelh » Mi, 23. Mär 2016 6:38

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 ...
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13319
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

Re: Inkrementelle Builds

Beitragvon hschmidt » Mi, 23. Mär 2016 11:59

Hallo,

vielen Dank für die Hinweise.

Wolfgang Ciriack hat geschrieben:Eine fehlende ch-Datei.

Das würde ich ausschließen, denn dann gibt es beim Build eine Fehlermeldung

brandelh hat geschrieben:Projektdatei auf falsche Querverweise prüfen ...

Ich habe jetzt die Projektdatei komplett neu aufgebaut, wie es in der Hilfe beschrieben ist, aber leider hat es nichts geändert.
Es werden bei einer Änderung in einer .prg-Datei immer noch alle Dateien neu kompiliert. :cry:

Muss wohl noch weiter suchen....

Viele Grüße

Hans
hschmidt
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 157
Registriert: Mo, 09. Jan 2006 17:06
Wohnort: Paderborn

Re: Inkrementelle Builds

Beitragvon Jan » Mi, 23. Mär 2016 12:07

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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11613
Registriert: Fr, 23. Sep 2005 17:23
Wohnort: 49328 Melle

Re: Inkrementelle Builds

Beitragvon brandelh » Mi, 23. Mär 2016 12:13

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 ?
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13319
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

Re: Inkrementelle Builds

Beitragvon hschmidt » Mi, 23. Mär 2016 14:41

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


Ich hab' natürlich zuerst im Forum gesucht, aber nichts Hilfreiches gefunden....

brandelh hat geschrieben:Kann es sein, dass eine PRE Routine die OBJ-Dateien löscht ?

Nein, eine PRE-Routine gibt es nicht.

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



Irgendwann vor längerer Zeit hatte ich das auch schon mal, weiß aber leider überhaupt nicht mehr, wie ich das seinerzeit wieder hinbekommen habe... :banghead:

Hans
hschmidt
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 157
Registriert: Mo, 09. Jan 2006 17:06
Wohnort: Paderborn

Re: Inkrementelle Builds

Beitragvon Jan » Mi, 23. Mär 2016 14:49

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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11613
Registriert: Fr, 23. Sep 2005 17:23
Wohnort: 49328 Melle

Re: Inkrementelle Builds

Beitragvon Manfred » Mi, 23. Mär 2016 15:08

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.
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
Benutzeravatar
Manfred
Foren-Moderator
Foren-Moderator
 
Beiträge: 16068
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: Inkrementelle Builds

Beitragvon brandelh » Mi, 23. Mär 2016 15:19

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 :

Code: Alles auswählen
   COMPILE_FLAGS = /a /ukxnew.ch /v /w /d_TPXMIG


/a => gesamtes Projekt übersetzen !!!

das verwende ich nur dann, wenn ich die endgültige Version ausliefere ;-)
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13319
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

Re: Inkrementelle Builds

Beitragvon hschmidt » Do, 24. Mär 2016 13:38

Hallo Hubert,

brandelh hat geschrieben:/a => gesamtes Projekt übersetzen !!!


zuerst habe ich gedacht, Du hast die Ursache gefunden - ist aber leider nicht so.

/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.

Jan hat geschrieben:Eventuell gibt es auf dem neuen Rechner irgendwelche Probleme mit Schreibrechten der temporären Dateien.

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.


Viele Grüße

Hans
hschmidt
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 157
Registriert: Mo, 09. Jan 2006 17:06
Wohnort: Paderborn

Re: Inkrementelle Builds

Beitragvon brandelh » Do, 24. Mär 2016 16:16

Peinlich peinlich, das /a habe ich mit dem PBUILD /a verwechselt ... :oops:

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
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13319
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim


Zurück zu Workbench (ab 2.0), VX (bis 1.9 SL1)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast