2013-10-24 12 views
7

Problema: CONFIG (debug, debug | release) e CONFIG (release, deubg | release) vengono sempre valutati ovunque venga scelto il debug o il rilascio in Qt Creator 2.8.1 per Linux.Qt Creator Gli switch CONFIG (debug, release) NON funzionano

La mia configurazione in applicazione Qt Creator (magazzino - di default per il nuovo progetto):

Projects->Build Settings->Debug Build Steps: 
    qmake build configuration: Debug 
    Effective qmake call: qmake2 proj.pro -r -spec linux-gnueabi-oe-g++ CONFIG+=debug 

Projects->Build Settings->Release Build Steps: 
    qmake build configuration: Release 
    Effective qmake call: qmake2 proj.pro -r -spec linux-gnueabi-oe-g++ 

La mia configurazione in proj.pro:

message(Variable CONFIG:) 
message($$CONFIG) 
CONFIG(debug,debug|release) 
{ 
    message(Debug build) 
} 
CONFIG(release,debug|release) 
{ 
    message(Release build) 
} 

uscita su console per Debug:

Project MESSAGE: Variable CONFIG: 
Project MESSAGE: lex yacc warn_on debug uic resources warn_on release incremental link_prl no_mocdepend release stl qt_no_framework debug console 
Project MESSAGE: Debug build 
Project MESSAGE: Release build 

Uscita su console per versione:

Project MESSAGE: Variable CONFIG: 
Project MESSAGE: lex yacc warn_on uic resources warn_on release incremental link_prl no_mocdepend release stl qt_no_framework console 
Project MESSAGE: Debug build 
Project MESSAGE: Release build 

In Windows 7 non ho riscontrato alcun problema con tale configurazione .pro e ha funzionato correttamente. Ero disperato e modificato il file .pro:

CONFIG = test 
message(Variable CONFIG:) 
message($$CONFIG) 
CONFIG(debug,debug|release) 
{ 
    message(Debug build) 
} 
CONFIG(release,debug|release) 
{ 
    message(Release build) 
} 

e sono stato sorpreso con l'uscita:

Project MESSAGE: Variable CONFIG: 
Project MESSAGE: test 
Project MESSAGE: Debug build 
Project MESSAGE: Release build 

quindi, anche se mi variabile CONFIG completamente pulita ancora vedere il debug e rilasciare la configurazione.

Cosa sto facendo male?

+0

Forse prova a eseguire 'qmake CONFIG- = Debug' per il rilascio e 'qmake CONFIG- = Release' per Debug – dvvrd

+0

Come puoi vedere nella citazione del primo codice Im facendo questo. – killdaclick

+0

No, non lo faccio. Vedo 'CONFIG + = debug', non' CONFIG- = debug' – dvvrd

risposta

18

Qmake è folle, questa è l'unica spiegazione valida. L'intero rilascio/debug in fase di configurazione più volte ha l'odore di un vecchio bug di progettazione che non è mai stato risolto prima che fosse troppo tardi e troppe configurazioni erano già state scritte. Ricorda le schede nella marca? Amico aveva 15 utenti, quindi non ha mai corretto le decisioni sbagliate.

In ogni caso.

Vedo lo stesso problema su linux, su Qt 4.8.4.1.

Ed ecco la soluzione: rimuovere l'interruzione di riga prima della parentesi graffa.

Letteralmente, questo funziona:

CONFIG(release, debug|release) { 
    message(Release) 
} 

CONFIG(debug, debug|release) { 
    message(Debug) 
} 

Anche se questo non lo fa:

CONFIG(release, debug|release) 
{ 
    message(Release) 
} 

CONFIG(debug, debug|release) 
{ 
    message(Debug) 
} 

Ho il sospetto che questo è un bug di analisi in alcune versioni di qmake, possibilmente su un solo lato di linux.

+1

grazie! questo bug esiste anche su Windows –

+1

Ancora un problema su Windows, Qt 5.3.1, Qt Creator 3.1.2 –

+0

Aggiungi Qt 5.6 a quella lista ... -______- –

Problemi correlati