2012-12-10 30 views

Odpowiedz

11

istnieje już funkcja isEmpty nie dostrzec:

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

Nie rozumiem, dlaczego eval nie działało myśli ...

+0

Traktuje znaki cudzysłowu jako literały dla ścieżek i próbuje uciec przed nimi w Qt 5.6. Robi się to samo z nawiasami, jeśli nie zawijamy zmiennych, które mają być ścieżkami, z nawiasami klamrowymi i '$$' po lewej stronie. –

-1

jeśli test jest ciąg znaków, spróbuj

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

i jeśli test jest inna zmienna, spróbuj

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

zmiennych w qmake są zwykle dereferencjonowane poprzez $$ zmienne, a nie "zmienna". –

4

jak własne odpowiedzi mówi: isEmpty(VARIABLE) robi to, co chcesz:

isEmpty(VARIABLE) { 
    ... 
} 

Językiem QMake ma odpowiednik równa operatora (==), ale można porównać takie rzeczy:

equals(VARIABLE, foo) { 
    ... 
} 

Można również sprawdzić, czy zmienna zawiera podłańcuch, używając wyrażenia regularnego:

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

Powodem, dla którego eval() nie zadziałało, jest to, że wykonuje instrukcję w nim i zwraca wartość true, jeśli instrukcja zakończyła się pomyślnie.

Więc w ten sposób:

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

... jesteś rzeczywiście przypisywania"" do VARIABLE, co zmienna pusta i wejściem do bloku.

Więcej informacji na temat funkcji Test: http://qt-project.org/doc/qt-5/qmake-test-function-reference.html

Powiązane problemy