Identifier for win64 configuration in Qmake
Solution 1
I do it like this
win32 {
## Windows common build here
!contains(QMAKE_TARGET.arch, x86_64) {
message("x86 build")
## Windows x86 (32bit) specific build here
} else {
message("x86_64 build")
## Windows x64 (64bit) specific build here
}
}
Solution 2
Since Qt5 you can use QT_ARCH
to detect whether your configuration is 32 or 64. When the target is 32-bit, that returns i386
and in case of a 64-bit target it has the value of x86_64
. So it can be used like:
contains(QT_ARCH, i386) {
message("32-bit")
} else {
message("64-bit")
}
Solution 3
UPDATE: since very recently, Qt has a way of doing this transparently and easily, without manual hassle:
win32-g++:contains(QMAKE_HOST.arch, x86_64):{
do something
}
Source: the brand new Qt Dev FAQ
Solution 4
I've figured out one way to do it.
Qt allows you to pass arbitrary config parameters which you can use to separate the targets.
By having a conditional config in your project file:
CONFIG(myX64, myX64|myX32) {
LIBPATH += C:\Coding\MSSDK60A\Lib\x64
} else {
LIBPATH += C:\Coding\MSSDK60A\Lib
}
and passing that custom config to qmake
with
qmake CONFIG+=myX64
you get the wanted result.
Comments
-
Tuminoid almost 2 years
Is there a "win64" identifier in Qmake project files? Qt Qmake advanced documentation does not mention other than unix / macx / win32.
So far I've tried using:
win32:message("using win32") win64:message("using win64") amd64:message("using amd64")
The result is always "using win32".
Must I use a separate project-file for x32 and x64 projects, so they would compile against correct libraries? Is there any other way to identify between 32-bit and 64-bit environments?