Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Compiler scope values in qmake

Tags:

c++

scope

qt

qmake

qmake provides several built-in platform scopes, allowing a project file to perform different operations depending on the current platform:

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

All platform specifications in the mkspecs directory can also be used to test various platform/compiler combination, e.g.

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

However, I can't seem to find a way to test only the compiler (without the os)

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

Is there a way to do this without having to list all combinations (linux-g++ | win32-g++ | cygwin-g++ | ... {})? If this is not possible, is there a good reason?

like image 715
Luc Touraille Avatar asked Jan 25 '13 13:01

Luc Touraille


2 Answers

You can do it like this:

*-g++ {
    ...
}
win32-msvc* {
    ...
}
like image 172
Kirween Avatar answered Sep 28 '22 12:09

Kirween


These build in platform scopes are based on the qmake spec in Qt installation directory. The way platform scopes are resolved is not documented, but it seems that qmake internally use regexes to determine if the scope apply to the current mkspecs.

Only wildcard matching is enabled (ie ?, *, [])

Note that inside qmake unix,win32, macx have several meanings, both as magic keywords, and as a regular expressions to match.

like image 23
UmNyobe Avatar answered Sep 28 '22 13:09

UmNyobe