Идентификатор конфигурации win64 в Qmake
Есть ли идентификатор win64 в файлах проекта Qmake? Документация Qt Qmake advanced не упоминается, кроме unix/macx/win32.
До сих пор я пытался использовать:
win32:message("using win32")
win64:message("using win64")
amd64:message("using amd64")
Результат всегда "используется win32".
Должен ли я использовать отдельный проект файл для проектов x32 и x64, чтобы они были скомпилированы против правильных библиотек? Есть ли другой способ определить между 32-разрядной и 64-разрядной средами?
Ответы
Ответ 1
Я делаю это так:
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
}
}
Ответ 2
Так как Qt5 вы можете использовать QT_ARCH
для определения, будет ли ваша конфигурация 32 или 64. Когда цель 32-разрядная, она возвращает i386
, а в случае 64-битной цели она имеет значение x86_64
. Поэтому его можно использовать как:
contains(QT_ARCH, i386) {
message("32-bit")
} else {
message("64-bit")
}
Ответ 3
UPDATE: с самого недавнего времени Qt имеет способ сделать это прозрачно и легко, без ручных проблем:
win32-g++:contains(QMAKE_HOST.arch, x86_64):{
do something
}
Источник: новый Qt Dev FAQ
Ответ 4
Я выяснил, как это сделать.
Qt позволяет вам передавать произвольные параметры конфигурации, которые вы можете использовать для разделения целей.
Имея условную конфигурацию в файле проекта:
CONFIG(myX64, myX64|myX32) {
LIBPATH += C:\Coding\MSSDK60A\Lib\x64
} else {
LIBPATH += C:\Coding\MSSDK60A\Lib
}
и передав этот настраиваемый конфиг на qmake
с помощью
qmake CONFIG+=myX64
вы получите желаемый результат.
Ответ 5
Нет, но вы можете создать и использовать новый mkspec, я думаю, qmake также определяет идентификатор платформы, названный в честь текущего mkspec. Зачем вам нужно протестировать 64-разрядную версию?
Рид