Compiler scope values in qmake

2019-04-07 21:21发布

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?

标签: c++ qt scope qmake
2条回答
我想做一个坏孩纸
2楼-- · 2019-04-07 22:06

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.

查看更多
小情绪 Triste *
3楼-- · 2019-04-07 22:26

You can do it like this:

*-g++ {
    ...
}
win32-msvc* {
    ...
}
查看更多
登录 后发表回答