Подтвердить что ты не робот

Идентификатор конфигурации 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-разрядной средами?

4b9b3361

Ответ 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-разрядную версию?

Рид