qt - QMake:测试功能没有按预期工作

标签 qt qt-creator qmake

在 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)
}

请注意:

  1. 大括号在测试的同一行。
  2. 测试的变量没有美元符号,只有变量名

关于qt - QMake:测试功能没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59282279/

相关文章:

c++ - 图形 View 中的剪贴板操作

c++ - QDial如何添加资源图片?

c++ - QTest覆盖涂料法

qt - 无法在 Qt 项目中使用共享库

c++ - 将多个文件添加到输出以用于额外的编译器 Qt

qt - 我应该如何解决 Qt 中的这个线程问题?

c++ - 跟踪 QTextBrowser 中的文本插入

c++ - 命令行QT中缺少DSO

c++ - 在 Qt 中使用库

c++ - 未定义对`Histogram::Histogram(QWidget*) 的引用