Вопрос

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

До сих пор я пробовал использовать:

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

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

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

Это было полезно?

Решение

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

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

    }
}

Другие советы

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

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

Обновить:с самого недавнего времени у Qt появился способ делать это прозрачно и легко, без лишних хлопот вручную:

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

Источник: совершенно новый FAQ по разработке Qt

Я придумал один способ сделать это.

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

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

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

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

qmake CONFIG+=myX64

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

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

Тростник

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top