Identificador de configuração Win64 em Qmake
Pergunta
Existe um identificador "win64" em arquivos de projeto QMake? Qt Qmake avançado documentação não menciona que não unix / macx / win32.
Até agora eu tentei usar:
win32:message("using win32")
win64:message("using win64")
amd64:message("using amd64")
O resultado é sempre "usando win32".
Eu devo usar um arquivo de projeto separado para projetos x32 e x64, então eles seria compilar contra bibliotecas corretas? Existe alguma outra maneira de identificar entre ambientes de 32 bits e 64 bits?
Solução
Eu faço isso como este
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
}
}
Outras dicas
Desde Qt5 você pode usar QT_ARCH
para detectar se sua configuração é 32 ou 64. Quando o alvo é de 32 bits, que retorna i386
e em caso de um alvo 64-bit tem o valor de x86_64
. Então, ele pode ser usado como:
contains(QT_ARCH, i386) {
message("32-bit")
} else {
message("64-bit")
}
UPDATE: desde muito recentemente, Qt tem uma maneira de fazer isso de forma transparente e facilmente, sem problemas manual:
win32-g++:contains(QMAKE_HOST.arch, x86_64):{
do something
}
Fonte: a nova marca Qt Dev FAQ
Eu descobri uma maneira de fazê-lo.
Qt permite passar parâmetros de configuração arbitrários que você pode usar para separar os alvos.
Por ter uma configuração condicional em seu arquivo de projeto:
CONFIG(myX64, myX64|myX32) {
LIBPATH += C:\Coding\MSSDK60A\Lib\x64
} else {
LIBPATH += C:\Coding\MSSDK60A\Lib
}
e passando esse costume config para qmake
com
qmake CONFIG+=myX64
você obter o resultado desejado.
Não, mas você pode criar e usar uma nova mkspec, acho qmake também define um identificador de plataforma nomeado após o mkspec atual. Por que você precisa de teste para 64 bits?
Reed