Значения компилятор в qmake

qmake предоставляет несколько встроенных областей платформы, позволяя файлу проекта выполнять различные операции в зависимости от текущей платформы:

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

все спецификации платформы в mkspecs каталог также может использоваться для тестирования различных комбинаций платформы / компилятора, например

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

однако я не могу найти способ проверить только компилятор (без ОС)

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

есть ли способ сделать это без необходимости перечислять все комбинации (linux-g++ | win32-g++ | cygwin-g++ | ... {})? Если это невозможно, есть ли веская причина?

2 ответов


Вы можете сделать это так:

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

эти сборки в области платформы на основе qmake spec в каталоге установки Qt. Способ разрешения областей платформы не документирован, но кажется, что qmake внутренне использует regexes чтобы определить, применяется ли область к текущему mkspecs.

только шаблоны включено (ie ?, *, [])

обратите внимание, что внутри qmake unix,win32, macx есть несколько смыслов, как волшебные ключевые слова, и как регулярные выражения, чтобы соответствовать.