关于c:Qt Creator:如何区分win32和win64

Qt Creator: how to tell win32 from win64

我必须在 .pro 文件中做这样的事情:

1
2
3
4
5
6
win32 {
    LIBS += -L../3rdparty/libusb-win32/lib/msvc -llibusb
} else
win64 {
    LIBS += -L../3rdparty/libusb-win32/lib/msvc_x64 -llibusb
}

问题是它不起作用,它总是链接win32库。
有什么建议吗?


您可以使用 QT_ARCH 变量来检测您的配置是 32 还是 64 :

1
2
3
4
5
contains(QT_ARCH, i386) {
    message("32-bit")
}else {
    message("64-bit")
}

当目标是 32 位时,变量返回 i386,如果是 64 位目标,它的值是 x86_64


2016 年 10 月更新。以下代码适用于 Windows(至少适用于所有最近的 MSVC 编译器 - 未测试 MinGW)、Mac OS X (clang) 和 Linux (GCC)。如果您不需要 Qt 4 支持,请随意省略第一个子句并直接引用 QT_ARCH

1
2
3
4
5
6
7
8
9
10
11
greaterThan(QT_MAJOR_VERSION, 4) {
    TARGET_ARCH=$${QT_ARCH}
} else {
    TARGET_ARCH=$${QMAKE_HOST.arch}
}

contains(TARGET_ARCH, x86_64) {
    ARCHITECTURE = x64
} else {
    ARCHITECTURE = x86
}

这是我们的做法:

1
2
3
4
5
6
7
win32 {
win32-g++:contains(QMAKE_HOST.arch, x86_64):{
    LIBS += ... #for win64
} else {
    LIBS += ... #for win32
}
}