12

如何测试变量是否为空或未在qmake .pro文件中定义?如果未定义变量,我希望能够设置默认值。

我试过

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

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

但我仍然收到“变量为空”的消息。

4

2 回答 2

17

已经有我没有发现的函数isEmpty :

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

我不明白为什么 eval 没有工作的想法......

于 2012-12-10T15:34:28.697 回答
7

就像你自己的回答说的那样,isEmpty(VARIABLE)做你想做的事:

isEmpty(VARIABLE) {
    ...
}

qmake 语言没有等价运算符 ( ==),但您可以像这样比较:

equals(VARIABLE, foo) {
    ...
}

您还可以使用正则表达式检查变量是否包含子字符串:

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

eval()不起作用的原因是它执行其中的语句,如果语句成功则返回 true。

所以通过这样做:

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

...您实际上是分配 ""VARIABLE,使变量为空并进入块。

更多关于测试功能:http: //qt-project.org/doc/qt-5/qmake-test-function-reference.html

于 2014-08-08T11:00:42.660 回答