Qt Creator:如何从win64告诉win32

时间:2011-07-05 07:58:15

标签: c++ qt 64-bit qmake

我必须在.pro文件中执行类似的操作:

win32 {
    LIBS += -L../3rdparty/libusb-win32/lib/msvc -llibusb
} else
win64 {
    LIBS += -L../3rdparty/libusb-win32/lib/msvc_x64 -llibusb
}

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

3 个答案:

答案 0 :(得分:4)

以下是我们如何做到这一点:

win32 {
win32-g++:contains(QMAKE_HOST.arch, x86_64):{
    LIBS += ... #for win64
} else {
    LIBS += ... #for win32
}
}

答案 1 :(得分:4)

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

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
}

答案 2 :(得分:3)

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

contains(QT_ARCH, i386) {
    message("32-bit")
}else {
    message("64-bit")
}

当目标是32位时,变量返回i386,如果是64位目标,则其值为x86_64