Projektdatei: mehrere Sektionen mit gleichnamigen PRGs

Sonstiges (nicht kategorisierbar)

Moderator: Moderatoren

Antworten
Robert
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 36
Registriert: Mo, 13. Feb 2006 12:47

Projektdatei: mehrere Sektionen mit gleichnamigen PRGs

Beitrag von Robert »

Hallo,

folgende Ausgangssituation:

Verzeichnissturktur:

Code: Alles auswählen

Programm
 |---Source
        |---------StdFunk.PRG
        |---------StdKlasse.PRG
        |---------V1
                      |---------Spezifisch1.prg
                      |---------main.prg
                      |---------TestDlg.PRG
        |---------V2
                      |---------Spezifisch2.prg
                      |---------main.prg
                      |---------TestDlg.PRG
Im Verzeichnis Source wollte ich allgemeingültige Klassen und Funktionen haben. Da ich mehrere exe-Dateien erzeugen will, die sich im Funktionsumfang geringfügig unterscheiden (z.B. Dialoge mit unterschiedlichen Daten), sollten alle PRGs, die spezifisch sind, oder sich geringfügig unterscheiden, in Unterverzeichnisse ablegen.

Mittels Projektdatei wollte ich das ganze dann wie folgt nutzen:

[PROJECT.XPJ]
..\V1.EXE
..\V2.EXE

[..\V1.EXE]
StdFunk.PRG
StdKlasse.PRG
V1\Spezifisch1.prg
V1\main.prg
V1\TestDlg.PRG

[..\V2.EXE]
StdFunk.PRG
StdKlasse.PRG
V2\Spezifisch2.prg
V2\main.prg
V2\TestDlg.PRG

Problem ist allerdings, dass die OBJ-Dateien alle im selben Verzeichnis abgelegt werden, und dadurch die main, und TestDlg Obj-Dateien wohl überschrieben werden, da ich in diesem Fall den Dialog von V1\TestDlg.PRG bekomme.

Ist dieses Vorhaben irgendwie möglich? In der Hilfe habe ich nichts passendes gefunden.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Robert,

wenn ich Dich richtig verstehe, möchtest Du die Objektdateien auch entsprechend verteilt haben!?

Hm, dieses Thema hatte ich hier schon mal angeschnitten und ich meine wir wären darauf gekommen, dass es so nicht geht. Ich habe das gleiche Problem.
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!!
Benutzeravatar
Lewi
1000 working lines a day
1000 working lines a day
Beiträge: 830
Registriert: Di, 07. Feb 2006 14:10
Wohnort: Hamburg
Danksagung erhalten: 2 Mal

Beitrag von Lewi »

Es gibt eine Möglichkeit, eine derartige Struktur in einer XPJ-Datei abzubilden, indem DLL-Dateien erzeugt werden:

Code: Alles auswählen

[PROJECT.XPJ]
    PROG.EXE
    v1.dll
    v2.dll

[PROG.EXE]
    COMPILE       = xpp
    COMPILE_FLAGS = /ga /wi /wl /wu /a /q /w
    DEBUG_SAVE    = yes
    GUI           = yes
    LINKER        = alink
    LINK_FLAGS    = 
    RC_COMPILE    = arc
    RC_FLAGS      = /v
    OBJ_DIR	  = C:\PROG\OBJ

// $START-AUTODEPEND
   main.obj
   StdFunk.obj
   stdklasse.obj
// $STOP-AUTODEPEND
    main.PRG
    stdfunk.prg
    stdklasse.PRG
 
[V1.dll]
    OBJ_DIR	  = C:\PROG\OBJ_V1
// $START-AUTODEPEND
    Spezifisch1.obj
    Main.obj
    TestDlg.obj
// $STOP-AUTODEPEND
    V1\Spezifisch1.prg
    V1\Main.prg
    V1\TestDlg.prg

[V2.dll]
    OBJ_DIR	  = C:\PROG\OBJ_V1
   v1.lib
// $START-AUTODEPEND
    Spezifisch2.obj
    Main.obj
    TestDlg.obj
// $STOP-AUTODEPEND
    V2\Spezifisch1.prg
    V2\Main.prg
    V2\TestDlg.prg

Allerdings ist dabei zu beachten, dass es beim Linken der DLL´s zu keinen Fehlerhinweisen: "unresolved external symbol" kommt. Dieser Fehler tritt auf, wenn in einer DLL eine Funktion/Procedure/Klasse aufgerufen wird, die nicht in der DLL enthalten ist. In diesem Fall müssen Standard-Funktion zu einer eigenen DLL zusammen gefasst werden und in den übrigen DLL´s angeben werden.
Robert
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 36
Registriert: Mo, 13. Feb 2006 12:47

Beitrag von Robert »

Hi Lewi,

vielen Dank für deinen Post. Ich wusste gar nicht, dass man OBJ_DIR auch in den einzelnen Sektionen angeben kann.

Ich hab jetzt mein Standard OBJ_DIR aus der [PROJECT] Sektion entfernt und jeweils in den Sektionen für die jeweiligen exe angelegt.
Damit werden in jedem meiner Unterverzeichnisse alle Objektdateien erzeugt.

Ein kleiner Test hat gezeigt, dass jetzt die richtige Funktion aufgerufen wird.
Antworten