Compiler scope values in qmake

2019-04-07 21:34发布

问题:

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?

回答1:

You can do it like this:

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


回答2:

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.



标签: c++ qt scope qmake