【问题标题】:Compiler scope values in qmakeqmake 中的编译器范围值
【发布时间】:2013-01-25 13:53:09
【问题描述】:

qmake 提供了几个内置的平台范围,允许项目文件根据当前平台执行不同的操作:

win32 {
    ...
}
unix {
    ...
}

mkspecs 目录下的所有平台规范也可用于测试各种平台/编译器组合,例如

linux-g++ {
    ...
}
win32-g++ {
    ...
}
win32-msvc2003 {
    ...
}

但是,我似乎找不到只测试编译器(没有操作系统)的方法

#This does not work
g++ {
    ...
}
msvc {
    ...
}

有没有办法做到这一点而不必列出所有组合 (linux-g++ | win32-g++ | cygwin-g++ | ... {})?如果这不可能,是否有充分的理由?

【问题讨论】:

    标签: c++ qt scope qmake


    【解决方案1】:

    你可以这样做:

    *-g++ {
        ...
    }
    win32-msvc* {
        ...
    }
    

    【讨论】:

    • 最好用*-g++*,来说明*g++-32*g++-64之类的(虽然这些规范中包含了对应的*g++,但是范围条件没有另外验证)。
    【解决方案2】:

    这些内置平台范围基于 Qt 安装目录中的qmake spec。解决平台范围的方式没有记录,但似乎qmake internally use regexes 确定范围是否适用于当前的mkspecs

    仅启用wildcard matching(即?*[]

    请注意,在 qmake 内部,unixwin32macx 有多种含义,既可以作为魔术关键字,也可以作为要匹配的正则表达式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-26
      • 2014-08-15
      • 2018-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多