qmake 中的编译器范围值

Compiler scope values in qmake

本文关键字:范围 编译器 qmake      更新时间:2023-10-16

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

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

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

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

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

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

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

你可以这样做:

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

这些平台范围内的构建基于 Qt 安装目录中的 qmake 规范。解析平台范围的方式没有记录,但似乎 qmake 内部使用正则表达式来确定范围是否适用于当前mkspecs

仅启用通配符匹配(即?*[]

请注意,在 qmake unix 中,win32 macx有几个含义,既是魔术关键字,也是匹配的正则表达式。