【发布时间】:2019-12-11 09:14:29
【问题描述】:
在 QtCreator 4.2.0 中,我尝试使用一个 *.pro 文件为多种硬件配置构建二进制文件。
在 Build & Run => Build Settings => Build Enviroment 我定义了环境变量TARGET,如下所示:
-
构建设置 A:变量
TARGET具有值bbb -
构建设置 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."))
}
但我仍然对使用测试函数的正确方法感兴趣。
【问题讨论】:
标签: qt qt-creator qmake