34

Qmakeプロジェクトファイルに「win64」識別子はありますか? Qt Qmake の高度なドキュメントでは、unix/macx/win32 以外は言及されていません。

これまでのところ、次を使用してみました:

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

結果は常に「win32 を使用」です。

x32 プロジェクトと x64 プロジェクトに別のプロジェクト ファイルを使用して、正しいライブラリに対してコンパイルする必要がありますか? 32 ビット環境と 64 ビット環境を識別する他の方法はありますか?

4

5 に答える 5

35

私はこのようにします

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

    }
}
于 2010-04-17T11:25:38.860 に答える
32

Qt5 以降QT_ARCH、構成が 32 か 64 かを検出するために使用できます。ターゲットが 32 ビットのi386場合はそれが返され、64 ビットのターゲットの場合はx86_64. したがって、次のように使用できます。

contains(QT_ARCH, i386) {
    message("32-bit")
} else {
    message("64-bit")
}
于 2015-06-09T05:47:04.343 に答える
11

更新: ごく最近以来、Qt には手動の手間をかけずに、これを透過的かつ簡単に行う方法があります。

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

出典:最新の Qt Dev FAQ

于 2010-04-24T10:18:17.963 に答える
2

私はそれを行う1つの方法を考え出しました。

Qt では、ターゲットを分離するために使用できる任意の構成パラメーターを渡すことができます。

プロジェクト ファイルに条件付き構成を含めることにより、次のようになります。

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

そのカスタム構成をにqmake渡す

qmake CONFIG+=myX64

必要な結果が得られます。

于 2009-01-01T09:58:20.167 に答える
0

いいえ。ただし、新しいmkspecを作成して使用することはできます。qmakeは、現在のmkspecにちなんで名付けられたプラットフォーム識別子も定義していると思います。なぜ64ビットをテストする必要があるのですか?

リード

于 2008-12-10T19:44:24.960 に答える