2014-01-08 24 views
3
变量比较

我知道,在QMAKE可以使用$$语法添加自定义变量参数,像这样:在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)

测试variablename是否等于字符串值。

例如:

TARGET = HelloWorld的 等于(TARGET,的 “HelloWorld”){ 消息( “目标分配成功”) }

也可以使用这种“对于不等于”检查常用方法如下:

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

你需要知道的是几个QMAKE功能,包括这个,正需要有一个局部变量来处理。将您的价值传递给qmake并打印出变量是不够的。这对qmake来说有点愚蠢的限制。

严格地说,你也可以使用下面的功能进行比较,但这是不太优选:

eval(string)

评估字符串使用qmake的语法规则的内容,并返回true。可以在字符串中使用定义和分配来修改现有变量的值或创建新的定义。

例如:

eval(TARGET = myapp) { 
    message($$TARGET) 
}