web-dev-qa-db-ja.com

Qmakeのwin64構成の識別子

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ビット環境を識別する他の方法はありますか?

27
Tuminoid

私はこのようにします

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

    }
}
29
did

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

contains(QT_Arch, i386) {
    message("32-bit")
} else {
    message("64-bit")
}
22
Nejat

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

win32-g++:contains(QMAKE_Host.Arch, x86_64):{
    do something
}

出典: 最新のQt Dev FAQ

9
rubenvb

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

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

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

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

そして、そのカスタム設定をqmakeに渡します。

qmake CONFIG+=myX64

希望する結果が得られます。

2
Tuminoid

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

リード

0
Reed Hedges