Seite 1 von 1

release und debug targets unter Linux

Verfasst: 8. September 2008 19:47
von FaS
Hallo!

Also meine makefiles erstelle ich mit qmake. Unter Linux (Debian) scheint Qt keine release und debug targets zu erstellen, unter Windows schon. Warum?

Danke,
FaS

Verfasst: 8. September 2008 20:00
von Christian81
Unter Windows ist 'debug_and_release' als Standard eingestellt. Unter Linux nicht :)

Verfasst: 8. September 2008 23:22
von FaS
Aaachso ist das. Also

Code: Alles auswählen

CONFIG += debug_and_release
und die Sache ist erledigt.

Aber eine Frage hab ich noch: "make all" macht ja nur Sinn, wenn die End-Targets verschieden sind. Folgendes funktioniert aber nicht, der nimmt einfach debug als definiert an:

Code: Alles auswählen

debug {
  TARGET = Bla-debug
} else {
  TARGET = Bla-release
}
Ich bitte um Aufklärung..

Danke!

Verfasst: 9. September 2008 07:49
von Christian81
Dieser Testfall

Code: Alles auswählen

CONFIG += debug_and_release
CONFIG -= debug release 

debug {
  message("debug")
} else {
  release {
    message("release")
  } else {
    message("debug_and_release")
  }
} 
Funktioniert bei mir wie gewünscht.

Verfasst: 9. September 2008 14:54
von FaS
Aber nicht wie von mir gewünscht ;-)

In deinem Beispiel würde er immer debug_and_release ausgeben. Ich wollte dies aber vom Parameter bei make abhängig machen, d.h. er muss das project file für das debug target anders abarbeiten als für das release target. Komischerweise wird bei einem "qmake project.pro"-Durchlauf 3x "debug_and_release" ausgegeben, als würde er soetwas tatsächlich versuchen... Versteh ich alles nicht.
Wenn das nicht geht, was taugt dann "make all", dann werden die beiden targets sich doch gegenseitig überschreiben!

MfG,
FaS

Verfasst: 9. September 2008 15:06
von Christian81
Debug gibt es unter Linux eh kaum - bringt also nicht viel

Code: Alles auswählen

debug* {
}
deckt debug und debug_and_release ab.

Verfasst: 9. September 2008 15:15
von FaS
Ich benutze zwar auch unter Windows kein debug target, aber für meinen ProjectManager würde ich das gerne vollständig haben. Man debugged unter Linux also nicht? gdb usw? Naja..

Also kann man mit einer Qt Projektdatei keine verschiedenen TARGETs definieren, wodurch "make all" erstens sinnlos wäre und zweitens der Fakt, dass in Windows make_and_release Standard ist noch viel sinnloser, da dann 2 Anwendungen erstellt werden und eine die andere überschreibt!?

Mann mann mann...

Verfasst: 9. September 2008 15:19
von Christian81
Es gibt ein debug_postfix oder so - komme gerade nicht drauf, aber die qt-pro-Files haben das auch drin. Deshalb gibt es ja qtcore4.dll und qtcore4d.dll
Unter Linux linkt man gegen die Qt release-Libs - egal ob Debug oder Release.