문제

Qmake 프로젝트 파일에 "Win64"식별자가 있습니까? 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
}

원천: 새로운 QT Dev FAQ

나는 그것을하는 한 가지 방법을 알아 냈습니다.

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