【问题标题】:Variable comparison in QMakeQMake 中的变量比较
【发布时间】:2014-01-27 06:34:54
【问题描述】:

我知道在 QMake 中您可以使用 $$ 语法来添加自定义变量参数,如下所示:

# In .pro
message($$FOO)
# In shell
$ qmake 'FOO="ABC"'

我也知道您也可以使用条件来检查当前平台等内容:

win32 {
    # ...
}

结合使用这些语法,你将如何定义一个条件来检查变量参数是否等于一个值?

# I want something like this:
$$FOO == "..." {
    # ...
}

【问题讨论】:

    标签: qt variables arguments qmake


    【解决方案1】:

    这是我们在 QtSerialPort 本身中使用的:

    equals(variablename, value)

    测试变量名是否等于字符串值。

    例如:

    目标 = helloworld 等于(目标,“helloworld”){ message("目标分配成功。") }

    你也可以使用这个“for not equal”检查,通常的方式如下:

    !equals(a, b) { ... }
    

    您需要注意这一点,因为包括这个在内的几个 qmake 函数需要有一个局部变量才能使用。将您的值传递给 qmake 并打印出变量是不够的。这是关于 qmake 的有点愚蠢的限制。

    严格来说,您也可以使用以下函数进行比较,但这不是首选:

    eval(string)

    使用 qmake 语法规则评估字符串的内容并返回 true。可以在字符串中使用定义和赋值来修改现有变量的值或创建新定义。

    例如:

    eval(TARGET = myapp) {
        message($$TARGET)
    }
    

    【讨论】:

      【解决方案2】:

      在阅读了一些内容后,我找到了自己问题的答案。您可以使用一个名为 equals 的 QMake 函数,但您必须使用变量参数的值分配一个局部变量才能在函数中使用它:

      F = $$FOO
      equals(F, bar) {
        message("FOO is bar")
      }
      

      现在你可以运行了:

      $ qmake FOO=bar
      => Project MESSAGE: FOO is bar
      

      【讨论】:

        猜你喜欢
        • 2014-08-28
        • 1970-01-01
        • 2014-03-09
        • 1970-01-01
        • 2016-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-18
        相关资源
        最近更新 更多