Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt QMake中的变量比较_Qt_Variables_Arguments_Qmake - Fatal编程技术网

Qt QMake中的变量比较

Qt QMake中的变量比较,qt,variables,arguments,qmake,Qt,Variables,Arguments,Qmake,我知道在QMake中,可以使用$$语法添加自定义变量参数,如下所示: # In .pro message($$FOO) # In shell $ qmake 'FOO="ABC"' 我还知道,您也可以使用conditonals检查当前平台之类的内容: win32 { # ... } 使用这些语法的组合,您将如何定义一个条件来检查变量参数是否等于一个值 # I want something like this: $$FOO == "..." { # ... } 读了一些东西后

我知道在QMake中,可以使用
$$
语法添加自定义变量参数,如下所示:

# In .pro
message($$FOO)
# In shell
$ qmake 'FOO="ABC"'
我还知道,您也可以使用conditonals检查当前平台之类的内容:

win32 {
    # ...
}
使用这些语法的组合,您将如何定义一个条件来检查变量参数是否等于一个值

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

读了一些东西后,我找到了自己问题的答案。您可以使用一个名为
equals
的QMake函数,但必须为局部变量指定变量参数的值才能在函数中使用它:

F = $$FOO
equals(F, bar) {
  message("FOO is bar")
}
现在您可以运行:

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

这就是我们在QtSerialPort本身中使用的内容:

测试variablename是否等于字符串值

例如:

目标=helloworld 等于(目标为“helloworld”){ 消息(“目标分配成功。”) }

您还可以按以下常规方式使用此“for not equal”检查:

!equals(a, b) { ... }
您需要注意这一点,因为包括此函数在内的几个qmake函数都需要有一个局部变量才能使用。仅将值传递给qmake并打印出变量是不够的。关于qmake,这有点愚蠢

严格地说,您也可以使用以下函数进行比较,但不太可取:

使用qmake语法规则计算字符串的内容并返回true。定义和赋值可在字符串中用于修改现有变量的值或创建新定义

例如:

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