qmake: debug & release
qmake: debug & release
Hallo,
ich habe drei .pro-Dateien, ein subdir-Template, eine für eine statisch gelinkte dll und eine für das eigentlich Programm.
Jetzt möchte ich sie so einrichten, dass "make" automatisch den release-Build erzeugt, während "make debug" einen debug-Build erzeugt. Allerdings soll die erzeugte Datei je nach Build einen unterschiedlichen Namen erhalten.
Nur welche Variablen müssen dafür gesetzt werden?
Wenn ich CONFIG+=debug_and_release, schreibe, kann ich mittels CONFIG(debug, debug|release) zwischen debug/release-Build unterscheiden, und jeweils den TARGET-Dateinamen angeben.
Nur dummerweise erzeugt dann make immer den debug-Build. Mit einem zusätzlichen CONFIG+=release lässt sich das zwar verhindern, nur wird dann beim debug-Build nicht mehr der Dateiname gesetzt.
Setzte ich statt release zusätzlich build_all, sind die Dateinamen zwar richtig, nur erzeugt "make" dann logischerweise immer beide Versionen.
Hat jemand dafür eine Lösung?
BeniBela
ich habe drei .pro-Dateien, ein subdir-Template, eine für eine statisch gelinkte dll und eine für das eigentlich Programm.
Jetzt möchte ich sie so einrichten, dass "make" automatisch den release-Build erzeugt, während "make debug" einen debug-Build erzeugt. Allerdings soll die erzeugte Datei je nach Build einen unterschiedlichen Namen erhalten.
Nur welche Variablen müssen dafür gesetzt werden?
Wenn ich CONFIG+=debug_and_release, schreibe, kann ich mittels CONFIG(debug, debug|release) zwischen debug/release-Build unterscheiden, und jeweils den TARGET-Dateinamen angeben.
Nur dummerweise erzeugt dann make immer den debug-Build. Mit einem zusätzlichen CONFIG+=release lässt sich das zwar verhindern, nur wird dann beim debug-Build nicht mehr der Dateiname gesetzt.
Setzte ich statt release zusätzlich build_all, sind die Dateinamen zwar richtig, nur erzeugt "make" dann logischerweise immer beide Versionen.
Hat jemand dafür eine Lösung?
BeniBela
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Hast Du es so gemacht wie hier beschrieben? Wenn ja kannst Du ggf. mal ein kleines Testprojekt schreiben.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Ja, ich habe jetzt zwei Varianten, die beide nicht richtig funktionieren:
1. die ganz normale, wo man mittels make debug und make release jeweils eine Version erzeugen kann.
Allerdings hat dann die debug und release Version den gleichen Dateinamen
2. Eine wo die unterschiedlichen Dateinamen funktionieren, allerdings kann man nicht mehr mit make release die Release-version erstellen. (wenn man nicht zuvor make all aufgerufen hat, da sonst die Untermakefiles nicht erzeugt werden)
Also, wie muss man die kombinieren?
Benito
1. die ganz normale, wo man mittels make debug und make release jeweils eine Version erzeugen kann.
Allerdings hat dann die debug und release Version den gleichen Dateinamen
Code: Alles auswählen
---texmakerx.pro:---
TEMPLATE = subdirs
CONFIG = $$unique(CONFIG)
CONFIG -= debug debug_and_release release
CONFIG += ordered debug_and_release
SUBDIRS += qcodeedit/lib/lib.pro \
texmakerapp.pro
---texmakerapp.pro:---
TEMPLATE = app
CONFIG = $$unique(CONFIG)
CONFIG -= debug debug_and_release release
CONFIG += qt debug_and_release
POST_TARGETDEPS += qcodeedit/libqcodeedit.a
LIBS += qcodeedit/libqcodeedit.a
...
---lib.pro---
TEMPLATE = lib
DESTDIR = ..
CONFIG = $$unique(CONFIG)
CONFIG -= debug debug_and_release release
CONFIG += staticlib debug_and_release
...
Code: Alles auswählen
---texmakerx.pro:---
TEMPLATE = subdirs
CONFIG += ordered debug_and_release build_all
SUBDIRS += qcodeedit/lib \
texmakerapp.pro
---texmakerapp.pro:---
TEMPLATE = app
CONFIG += qt debug_and_release build_all
CONFIG(debug, debug|release) {
POST_TARGETDEPS += qcodeedit/libqcodeeditd.a
LIBS += qcodeedit/libqcodeeditd.a
TARGET = texmakerxd
} else {
POST_TARGETDEPS += qcodeedit/libqcodeedit.a
LIBS += qcodeedit/libqcodeedit.a
TARGET = texmakerx
}
...
---lib.pro---
TEMPLATE = lib
CONFIG += staticlib debug_and_release build_all
CONFIG(debug, debug|release) {
TARGET = qcodeeditd
MOC_DIR = .buildd
OBJECTS_DIR = .buildd
} else {
TARGET = qcodeedit
MOC_DIR = .build
OBJECTS_DIR = .build
}
...
Benito
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Ich liebe qmake... *grml* gut das wir das schon lange in die Mülltonne geworfen haben 
Ich kann nur raten aber bei den Beispielen und auch in den qt-sourcen ist immer noch von build_pass die Rede:
Ich kann nur raten aber bei den Beispielen und auch in den qt-sourcen ist immer noch von build_pass die Rede:
!debug_and_release|build_pass {
CONFIG(debug, debug|release) {
TARGET = $$member(TARGET, 0)d
}
}
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Könnte sein, dass build_pass funktioniert, nur leider steht nichts davon in der Qt4.3 Dokumentation. Und da IMHO der Rest des Programmes unter 4.3 compilerbar ist, wäre es blöd nur wegen qmake darauf zu verzichten.
Wenn ihr es im Müll habt, gibt es denn ein anderes Tool, welches man verwenden kann? (und das auch überall, wo QT installiert ist, vorhanden ist)
Wenn ihr es im Müll habt, gibt es denn ein anderes Tool, welches man verwenden kann? (und das auch überall, wo QT installiert ist, vorhanden ist)
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten: