2012-12-10 14 views
6

Come è possibile verificare se una variabile è vuota o non definita in un file qmake.pro? Voglio essere in grado di impostare un valore di default se la variabile non è definita.test se una variabile è vuota e dare valore predefinito durante qmake

ho cercato

eval("VARIABLE" = ""){ 
    VARIABLE = test 
} 

eval("VARIABLE" = ""){ 
    message(variable is empty) 
} 

ma ho ancora ottenere il messaggio "variabile è vuota".

risposta

11

c'è già la funzione isEmpty non ho posto:

isEmpty(VARIABLE){ 
    VARIABLE = test 
}  
isEmpty(VARIABLE){ 
    message(variable is empty) 
} 

io non capisco perché eval pensiero non ha funzionato ...

+0

Tratta le virgolette come letterali per i percorsi e cerca di sfuggire loro in Qt 5.6. Si fa la stessa cosa alle parentesi se non si avvolgono le variabili destinate ad essere percorsi con parentesi graffe e il '' $$ sulla parte esterna-sinistra. –

-1

se il test è un valore stringa, provare

eval("VARIABLE" = ""){ 
    VARIABLE = "test" 
} 

e se il test è un'altra variabile, provare

eval("VARIABLE" = ""){ 
    VARIABLE = $$test 
} 
+1

variabili nel qmake sono di solito dereferenziato via variabile $$, non "VARIABILE". –

4

come la vostra risposta dice, isEmpty(VARIABLE) fa ciò che vuoi:

isEmpty(VARIABLE) { 
    ... 
} 

Il linguaggio qmake non ha equivalente di un operatore di uguaglianza (==), ma è possibile confrontare le cose in questo modo:

equals(VARIABLE, foo) { 
    ... 
} 

Puoi anche controllare se una variabile contiene una sottostringa, usando un'espressione regolare:

contains(VARIABLE, .*foo.*) { 
    ... 
} 

Il motivo per cui eval() non ha funzionato, è che esso esegue l'istruzione all'interno di esso e restituisce true se l'istruzione è riuscita.

Così facendo questo:

eval(VARIABLE = "") { 
    ... 
} 

... in realtà si sta assegnando "" a VARIABLE, rendendo la variabile vuota e inserendo il blocco.

più su funzioni di test: http://qt-project.org/doc/qt-5/qmake-test-function-reference.html

Problemi correlati