【问题标题】:QMake : "Extra characters after test expression error" when using the "system()" functionQMake:使用“system()”函数时出现“测试表达式错误后的额外字符”
【发布时间】:2020-07-04 09:53:58
【问题描述】:

我想检查系统中存在的编译器版本,并在此基础上定义一些宏。我在.pro文件中添加的内容如下:

7 linux-g++ {
8    system( g++ --version | grep -e "\7.[0-9]" ) {
9        message( "g++ version 7.x found" )
10        QMAKE_CXX = x86_64-linux-gnu-g++-7
11    }
12    else system( g++ --version | grep -e "\<8.[0-9]" ) {
13        message( "g++ version 8.x found" )
14        QMAKE_CXX += x86_64-linux-gnu-g++-8
15        DEFINES += HAS_FILESYSTEM_SPEC
16    }
17    else system( g++ --version | grep -e "\<10.[0-9]" ) {
18        message( "g++ version 10.x found" )
19        QMAKE_CXX += x86_64-linux-gnu-g++-10
20        DEFINES += HAS_FILESYSTEM_SPEC
21    }
22    else {
23        error( "Unknown system/compiler configuration" )
24    }
25 }

但之后我收到以下错误:

Extra characters after test expression.

对于1217 行。

【问题讨论】:

    标签: linux qt syntax-error qt5 qmake


    【解决方案1】:

    通过以下示例:

    VERSION = $$system(g++ --version)
    contains( VERSION, 7.[0-9].[0-9] ) {
        message(g++ 7.x version)
    }
    else {
        message(not g++ 7.x version)
    
        contains( VERSION, 4.[0-9].[0-9] ) {
            message(g++ 4.x version)
        }
        else {
            message(not g++ 4.x version)
        }
    }
    

    当我们的 g++ 版本为 4.9.3 时,我们得到了输出。

    Project MESSAGE: not g++ 7.x version
    Project MESSAGE: g++ 4.x version
    

    见:https://doc.qt.io/qt-5/qmake-function-reference.html#system-replace

    【讨论】:

      猜你喜欢
      • 2019-07-01
      • 2012-03-27
      • 1970-01-01
      • 2012-10-14
      • 2013-06-20
      • 1970-01-01
      • 1970-01-01
      • 2022-12-20
      • 2020-05-31
      相关资源
      最近更新 更多