release und debug targets unter Linux

Alles rund um die Programmierung mit Qt
Antworten
FaS
Beiträge: 184
Registriert: 25. Mai 2006 19:48
Kontaktdaten:

release und debug targets unter Linux

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Unter Windows ist 'debug_and_release' als Standard eingestellt. Unter Linux nicht :)
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
FaS
Beiträge: 184
Registriert: 25. Mai 2006 19:48
Kontaktdaten:

Beitrag 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!
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
FaS
Beiträge: 184
Registriert: 25. Mai 2006 19:48
Kontaktdaten:

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
FaS
Beiträge: 184
Registriert: 25. Mai 2006 19:48
Kontaktdaten:

Beitrag 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...
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten