Seite 1 von 1

qmake projekt datei, zielordner für debug und release

Verfasst: 7. Juli 2006 09:28
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

Verfasst: 7. Juli 2006 09:40
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...

Verfasst: 7. Juli 2006 16:37
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

Vielleicht so...

Verfasst: 11. August 2006 12:42
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
}

Verfasst: 1. August 2007 21:12
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 ;-)