Qt Creator: как отличить win32 от win64 - PullRequest
1 голос
/ 05 июля 2011

Я должен сделать что-то подобное в файле .pro:

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

Проблема в том, что он не работает, он всегда связывает библиотеку win32. Есть предложения?

Ответы [ 3 ]

4 голосов
/ 04 ноября 2011

октябрь 2016 г. обновление. Следующий код работает в Windows (по крайней мере, со всеми последними компиляторами MSVC - не тестировал MinGW), Mac OS X (clang) и Linux (GCC). Не стесняйтесь опускать первое предложение и обращаться непосредственно к QT_ARCH, если вам не нужна поддержка Qt 4.

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
}
4 голосов
/ 22 августа 2011

Вот как мы это делаем:

win32 {
win32-g++:contains(QMAKE_HOST.arch, x86_64):{
    LIBS += ... #for win64
} else {
    LIBS += ... #for win32
}
}
3 голосов
/ 09 июня 2015

Вы можете использовать переменную QT_ARCH, чтобы определить, является ли ваша конфигурация 32 или 64:

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

Когда цель является 32-разрядной, переменная возвращает i386, а в случае 64-разрядной цели она имеет значение x86_64.

...