2013-06-28 8 views
6

Questo è tutto pro di file:qmake elabora il mio pro-file di tre volte invece di uno

message("This message should appeare only once!!!") 
CONFIG += qt 
SOURCES += src/main.cpp 

invoco qmake nel seguente modo:

set QMAKESPEC=win32-msvc2008 
set QTDIR=c:\Qt\4.8.4_vs2008\ 

call "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86 
call "%QTDIR%\bin\qmake.exe" -tp vc Server.pro 

e ottengo seguente output:

Impostazione dell'ambiente per l'utilizzo degli strumenti di Microsoft Visual Studio 2008 x86.

Progetto MESSAGGIO: questo messaggio dovrebbe essere visualizzato solo una volta !!!

Progetto MESSAGGIO: questo messaggio dovrebbe essere visualizzato solo una volta !!!

Progetto MESSAGGIO: questo messaggio dovrebbe essere visualizzato solo una volta !!!

Perché il messaggio è stato stampato TRE VOLTE?

risposta

8

Perché per impostazione predefinita, qmake creerà 3 file di make: Makefile, Makefile.debug e Makefile.release. Questo perché la configurazione di default è costruire il progetto nelle modalità di debug e release. Se aggiungi CONFIG -= debug_and_release al tuo file .pro, dovresti visualizzare il messaggio solo una volta. Puoi trovare ulteriori informazioni here e here.

+0

Non scrivere MAI COFIG = ... Utilizzare CONFIG + = ... –

0

Aggiungi questa riga al file .pro

CONFIG -= debug_and_release debug_and_release_target 

qmake genera solo un Makefile con essa e il file .pro sarà valutata solo una volta.

9

In realtà, la condizione "build_pass" è sempre vero, tranne la prima volta qmake analizza il file .pro, quindi le seguenti opere:

!build_pass:message("This message should appear only once") 

Ho fatto una funzione di supporto, che funziona bene nel mio progetto:

defineTest(print) { 
    !build_pass:message($$1) 
} 

print("This message should appear only once") 
Problemi correlati