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ビット環境を識別する他の方法はありますか?
私はこのようにします
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
私はそれを行う1つの方法を考え出しました。
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ビットをテストする必要があるのですか?
リード