Идентификатор конфигурации win64 в Qmake - PullRequest
27 голосов
/ 10 декабря 2008

Есть ли в файлах проекта Qmake идентификатор "win64"? В документации Qt Qmake advanced не упоминается ничего, кроме unix / macx / win32.

Пока я пробовал использовать:

win32:message("using win32")
win64:message("using win64")
amd64:message("using amd64")

Результат всегда "использует win32".

Должен ли я использовать отдельный файл проекта для проектов x32 и x64, чтобы они компилировались с правильными библиотеками? Есть ли другой способ идентификации между 32-разрядной и 64-разрядной средой?

Ответы [ 5 ]

29 голосов
/ 17 апреля 2010

Я делаю это так

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

    }
}
21 голосов
/ 09 июня 2015

Начиная с Qt5, вы можете использовать QT_ARCH, чтобы определить, является ли ваша конфигурация 32 или 64. Когда цель является 32-битной, возвращается i386, а в случае 64-битной цели она имеет значение x86_64. Так что его можно использовать как:

contains(QT_ARCH, i386) {
    message("32-bit")
} else {
    message("64-bit")
}
9 голосов
/ 24 апреля 2010

ОБНОВЛЕНИЕ: с недавнего времени в Qt есть способ сделать это прозрачно и легко, без хлопот вручную:

win32-g++:contains(QMAKE_HOST.arch, x86_64):{
    do something
}

Источник: Новый Qt Dev FAQ

2 голосов
/ 01 января 2009

Я нашел один способ сделать это.

Qt позволяет вам передавать произвольные параметры конфигурации, которые вы можете использовать для разделения целей.

Имея условную конфигурацию в файле проекта:

CONFIG(myX64, myX64|myX32) {
    LIBPATH += C:\Coding\MSSDK60A\Lib\x64
} else {
    LIBPATH += C:\Coding\MSSDK60A\Lib
}

и передачу этой пользовательской конфигурации в qmake с помощью

qmake CONFIG+=myX64

вы получите желаемый результат.

0 голосов
/ 10 декабря 2008

Нет, но вы можете создать и использовать новый mkspec, я думаю, qmake также определяет идентификатор платформы, названный в честь текущего mkspec. Зачем вам нужно тестировать на 64 бит?

Reed

...