qmake中的编译器范围值

时间:2013-01-25 13:53:09

标签: c++ qt scope qmake

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

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

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

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

但是,我似乎无法找到一种方法来只测试编译器(没有os)

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

有没有办法在不必列出所有组合(linux-g++ | win32-g++ | cygwin-g++ | ... {})的情况下执行此操作?如果这是不可能的,有充分的理由吗?

2 个答案:

答案 0 :(得分:8)

你可以这样做:

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

答案 1 :(得分:2)

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

仅启用wildcard matching(即?*[]

请注意,在qmake unix中,win32macx有多种含义,既有魔术关键字,也有正则表达式匹配。