在 QtCreator 4.2.0 中,我尝试使用一个 *.pro 文件为多种硬件配置构建二进制文件。
在 Build & Run => Build Settings => Build Enviroment 中,我定义环境变量 TARGET
如下:
- build设置 A:变量
TARGET
的值为bbb
- build设置 B:变量
TARGET
具有值desktop
在 pro 文件中,我使用了以下测试函数:
equals($$TARGET,"bbb")
{
message("setting include paths for bbb"))
message($$TARGET)
}
equals($$TARGET,"laptop")
{
message("setting include paths for laptop.")
message($$TARGET)
}
contains($$TARGET,"*bbb*")
{
message("setting include paths for bbb"))
message($$TARGET)
}
contains($$TARGET,"*laptop*")
{
message("setting include paths for laptop.")
message($$TARGET)
}
我在运行 qmake 时得到了这个输出:
Project MESSAGE: setting include paths for bbb
Project MESSAGE: bbb
Project MESSAGE: setting include paths for laptop.
Project MESSAGE: bbb
Project MESSAGE: setting include paths for bbb
Project MESSAGE: bbb
Project MESSAGE: setting include paths for laptop.
Project MESSAGE: bbb
Project MESSAGE: setting include paths for bbb
这对我来说毫无意义,我不知道我在这里做错了什么。为什么从 laptop
执行测试后的部分?
顺便说一下,我使用Scopes
解决了我的问题。这对我来说很完美:
CONFIG += $$(TARGET_HW)
desktop {
message("setting include paths for laptop.")
}
cetec {
message("setting include paths for cetec."))
}
但我仍然对使用测试函数的正确方法感兴趣。
最佳答案
我为第一个测试提供了正确的语法,例如:
equals(TARGET,"bbb") {
message("setting include paths for bbb"))
message($$TARGET)
}
请注意:
- 大括号在测试的同一行。
- 测试的变量没有美元符号,只有变量名
关于qt - QMake:测试功能没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59282279/