qmake projekt datei, zielordner für debug und release

Alles rund um die Programmierung mit Qt
Antworten
kellerkind018
Beiträge: 14
Registriert: 11. Juni 2006 21:18
Kontaktdaten:

qmake projekt datei, zielordner für debug und release

Beitrag von kellerkind018 »

Hallo zusammen.

Ich habe ein problem mit meinem Projekt-File. Dort habe ich folgendes angegeben (auf das wesentliche gekürzt):

Code: Alles auswählen

CONFIG += debug_and_release

CONFIG(debug, debug|release) {
# release
DESTDIR = ./release
MOC_DIR = ./release/tmp/moc
UI_DIR = ./release/tmp/uic
OBJECTS_DIR = ./release/tmp/obj
RCC_DIR = ./release/tmp/qrc
} else {
# debug
DESTDIR = ./debug
MOC_DIR = ./debug/tmp/moc
UI_DIR = ./debug/tmp/uic
OBJECTS_DIR = ./debug/tmp/obj
RCC_DIR = ./debug/tmp/qrc
}
Auf diese Weise werden alle Zwischendateien in den entsprechenden Unterverzeichnissen erstellt. Mit Ausnahme der von uic.exe erstellten Header-Datei. Diese wird, warum auch immer, stets nur im Ordner "./release/tmp/uic" erstellt. Selbst wenn man nur "make debug" ausführt.

Kann mir jemand sagen, wie ich die Einstellungen machen müsste, damit wirklich die Dateien von debug und release im jeweils richtigen Ordner stehen?

Danke vielmals!

Thomas
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

mit comments...

Code: Alles auswählen

TEMPLATE = app
TARGET += 
DEPENDPATH += . ui
INCLUDEPATH += . ui
## alle compilierter salat wass nicht sofort brauchbar ist ####
unix:OBJECTS_DIR	= build/.o/unix
win32:OBJECTS_DIR	= build/.o/win32
mac:OBJECTS_DIR	= build/.o/mac
MOC_DIR	= build/.moc
RCC_DIR	= build/.rcc
## alle ui file und die ui result header #####
UI_DIR	= ui
## wo die exe oder mac application hin soll ##
DESTDIR	+= bin
## der name der exe oder application ##
TARGET	= crm


config nach bedurfniss...
kellerkind018
Beiträge: 14
Registriert: 11. Juni 2006 21:18
Kontaktdaten:

Beitrag von kellerkind018 »

Das löst mein Problem nicht, weil ich für debug und release jeweils ein eigenes verzeichnis mit einem tmp unterverzeichnis haben möchte. Also so:
debug
-tmp
-obj
-moc
-qrc
-uic
target.exe

release
-tmp
-obj
-moc
-qrc
-uic
target.exe

Folgende Einstellungen

Code: Alles auswählen

TEMPLATE = app
CONFIG(debug, debug|release) {
    DESTDIR = ./release
} else {
    DESTDIR = ./debug
}

MOC_DIR = $${DESTDIR}/tmp/moc
UI_DIR = $${DESTDIR}/tmp/uic
OBJECTS_DIR = $${DESTDIR}/tmp/obj
RCC_DIR = $${DESTDIR}/tmp/qrc

message ( destdir is $${DESTDIR}. uic is $${UI_DIR}. moc is $${MOC_DIR}) 
erzeugen die Ausgabe

Code: Alles auswählen

Project MESSAGE: destdir is ./release. uic is ./release/tmp/uic. moc is ./release/tmp/moc
Project MESSAGE: destdir is ./release. uic is ./release/tmp/uic. moc is ./release/tmp/moc
Project MESSAGE: destdir is ./debug. uic is ./debug/tmp/uic. moc is ./debug/tmp/moc
ersteres für das normale make file, zweites für das release und letztes für das debug make file.
Dennoch ist im debug makefile der Pfad für die vom uic generierte Header Datei auf release eingestellt. Wieso???

Freue mich immer noch über Hilfe.

Thomas
stimpy
Beiträge: 64
Registriert: 7. März 2006 17:05

Vielleicht so...

Beitrag von stimpy »

Hatte gerade fast das gleiche Problem. Für meine Zwecke tut's das erstmal:

Code: Alles auswählen

debug{
	DESTDIR = ../libs/debug
}
release{
	DESTDIR = ../libs/release
}
M@g!ndo$ch
Beiträge: 70
Registriert: 7. Januar 2007 14:56

Beitrag von M@g!ndo$ch »

Hi,

hatte das selbe Problem wie stimpy. So wie er's beschreibt funtionierts auch! Ich habs allerdings zunächst so probiert:

Code: Alles auswählen

debug
{ 
   DESTDIR = ../bin/debug 
} 
release
{ 
   DESTDIR = ../bin/release 
}
Und das geht leider nicht ;-)
Antworten