Qt 测试变量是否为空,并在qmake期间提供默认值

Qt 测试变量是否为空,并在qmake期间提供默认值,qt,qmake,Qt,Qmake,如何测试变量是否为空或未在qmake.pro文件中定义?我想 如果未定义变量,则能够设置默认值 我试过了 eval("VARIABLE" = ""){ VARIABLE = test } eval("VARIABLE" = ""){ message(variable is empty) } 但我仍然收到消息“variable is empty”。如果测试是字符串值,请尝试 eval("VARIABLE" = ""){ VARIABLE = "test" } 如

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

我试过了

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

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

但我仍然收到消息“variable is empty”。

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

eval("VARIABLE" = ""){
     VARIABLE = "test"
}
如果test是另一个变量,请尝试

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

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

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

我不明白为什么eval不起作用,我想…

就像你自己的答案所说的,
isEmpty(VARIABLE)
做你想做的事:

isEmpty(VARIABLE) {
    ...
}
qmake语言没有等效的equals运算符(
==
),但是您可以比较如下内容:

equals(VARIABLE, foo) {
    ...
}
还可以使用正则表达式检查变量是否包含子字符串:

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

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

因此,通过这样做:

eval(VARIABLE = "") {
    ...
}
…实际上是将
赋值给
变量
,使变量为空并输入块


关于测试函数的更多信息:

qmake中的变量通常通过$$VARIABLE而不是“VARIABLE”解除引用。它将引号视为路径的文本,并尝试在Qt5.6中转义它们。如果不使用大括号和左外侧的
$$
包装要作为路径的变量,则括号也会执行相同的操作。