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

UmN*_*obe 9 qt qmake

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

我试过了

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

eval("VARIABLE" = ""){
     message(variable is empty)
}
Run Code Online (Sandbox Code Playgroud)

但我仍然收到消息"变量为空".

UmN*_*obe 15

已经有功能isEmpty我没有发现:

isEmpty(VARIABLE){
  VARIABLE = test
}    
isEmpty(VARIABLE ){
  message(variable is empty)
}
Run Code Online (Sandbox Code Playgroud)

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


Kan*_*sto 5

就像您自己的答案说的isEmpty(VARIABLE)那样,您想要做什么:

isEmpty(VARIABLE) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

qmake语言没有等于运算符(==)的等效项,但是您可以比较以下内容:

equals(VARIABLE, foo) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

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

contains(VARIABLE, .*foo.*) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

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

因此,通过执行以下操作:

eval(VARIABLE = "") {
    ...
}
Run Code Online (Sandbox Code Playgroud)

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

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