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* {
...
}
Эти встроенные области платформы основаны на qmake spec в каталоге установки Qt. Способ разрешения областей платформы не задокументирован, но кажется, что qmake внутренне использует регулярные выражения определить, применяется ли область действия к текущему mkspecs
,
Только сопоставление по шаблону включен (т.е. ?
, *
, []
)
Обратите внимание, что внутри qmake unix
,win32
, macx
имеют несколько значений, как магические ключевые слова, так и регулярные выражения для соответствия.