qmake 中的编译器范围值
Compiler scope values in qmake
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
有几个含义,既是魔术关键字,也是匹配的正则表达式。
相关文章:
- 基于范围循环到旧编译器的旧样式
- 为什么当我的代码超出函数范围时,"does not name a type"出现编译器错误?
- 编译器是否足够聪明,以至于 std::move 变量超出范围?
- 函数返回本地变量,尽管变量不超出范围,没有编译器问题,并且代码执行
- Qt 编译器错误:未在此范围内声明"emit"
- 为什么编译器不优化集合元素上的空范围循环?
- C ++:对为什么编译器给出未在此范围内声明的错误感到困惑
- 扩展编译器以在编译时计算"complicated"函数(具有已知的输入值),超出"constexpr"的范围
- arm-none-eabi-g++ 编译器抛出编译错误pthread_exit未在此范围内声明
- 基于范围的for循环引发带有数组参数的编译器错误
- 模板类的方法使用全局范围内的 typedef.编译器错误
- 在 c++ 中定义的预编译器的范围是什么?
- int8_t、int16_t、int32_t 和 int64_t 在不同的C++编译器上是否具有相同的各自范围?
- 如果左值不再在其定义范围内使用,编译器是否允许将左值转换为右值引用
- 在Qt Creator中禁用编译器警告项目范围(当使用MSVC时)
- 如何将范围信息传递给c++编译器
- 应用范围解析运算符会导致编译器阻塞
- 编译器警告使用范围外变量的内存
- 编译器可以报告未知属性上的错误吗?即使有范围
- GetCurrentHwProfile 未使用 MinGW 的 g++ 编译器在此范围内声明