2014-01-08 3 views
3

Я знаю, что в QMAKE вы можете использовать синтаксис $$ для добавления пользовательского переменных аргументов так:Variable сравнения в QMAKE

# In .pro 
message($$FOO) 
# In shell 
$ qmake 'FOO="ABC"' 

Я также знаю, что вы можете использовать conditonals проверить такие вещи, как текущая платформа, а также:

win32 { 
    # ... 
} 

Используя комбинацию этих синтаксисов, как бы вы определили условное, чтобы проверить, если переменная аргумент равен значение?

# I want something like this: 
$$FOO == "..." { 
    # ... 
} 

ответ

3

После прочтения некоторых вещей я нашел ответ на свой вопрос. Существует функция QMake называется equals вы можете использовать, хотя вы должны назначить локальную переменную со значением переменного аргумента, чтобы использовать его в функции:

F = $$FOO 
equals(F, bar) { 
    message("FOO is bar") 
} 

Теперь вы можете запустить:

$ qmake FOO=bar 
=> Project MESSAGE: FOO is bar 
4

Это то, что мы используем в самой QtSerialPort:

equals(variablename, value)

Проверяет, равно ли переменное имя в строке.

Например:

TARGET = HelloWorld равно (TARGET, "HelloWorld") { сообщение ("Целевое назначение было успешным") }

Можно также использовать этот " для не равно»проверяет обычным способом следующим образом:

!equals(a, b) { ... } 

Вы должны знать об этом, как несколько функций QMAKE, в том числе это, п чтобы иметь возможность работать с локальной переменной. Недостаточно передать ваше значение qmake и распечатать переменную. Это немного глупое ограничение qmake.

Строго говоря, вы можете также использовать следующую функцию для сравнения, но это является менее предпочтительным:

eval(string)

Вычисляет содержимое строки используя правила синтаксиса QMAKE и возвращает истину. Определения и назначения могут использоваться в строке для изменения значений существующих переменных или создания новых определений.

Например:

eval(TARGET = myapp) { 
    message($$TARGET) 
} 
Смежные вопросы