测试变量是否为空并在qmake期间给出默认值

时间:2012-12-10 15:27:02

标签: qt qmake

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

我试过

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

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

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

3 个答案:

答案 0 :(得分:12)

我已经找不到我发现的函数isEmpty

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

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

答案 1 :(得分:4)

就像你自己的回答所说,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

答案 2 :(得分:-1)

如果test是字符串值,请尝试

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

如果test是另一个变量,请尝试

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