2

現在、同僚と QT アプリケーションを開発しています。このアプリケーションの特定の部分では、サード パーティのライブラリを使用する必要があります。このライブラリのごく一部しか必要ないため、不必要にファイルをリポジトリに転送することを避けるために、プロジェクトに含める .so ファイルを作成することにしました。最近、アーキテクチャが異なるため (32 ビットと 64 ビット)、.so ファイルは基本的に役に立たないことを思い出したときに、問題が発生しました。これらの .so ファイルがあったので、これらの両方を含めて、プロジェクトのビルド時に、ビルドしているアーキテクチャを動的に検出し、適切な共有オブジェクト ファイルを含めることは可能ですか?

私が理解できない部分は、.pro ファイルのアーキテクチャを認識することです。qtフォーラムでこの回答を見つけましたが、誰かがコメントしたように、このソリューションはWindowsでのみ利用できます。環境変数 $MACHTYPE を使用してアーキテクチャを検出することに関する提案も見つけましたが、間違っていなければ、これは Linux のみのソリューションです。アーキテクチャを検出する真のクロスプラットフォームの方法はありますか?

また、サードパーティ ライブラリ ソースの tarball をアプリケーションと一緒にパッケージ化することも検討しましたが、プログラムを使用する前にライブラリを自分でコンパイルするようユーザーに依頼するのは「ユーザー フレンドリーではない」と判断しました。可能であれば、このプログラムをできるだけスタンドアロンにする必要があることに同意しました。これを読んでくれてありがとう!

4

1 に答える 1

2

私は今、ほとんど同じことをしています。Qt SDK 1.2 には QMAKE_HOST.arch があります

contains( QMAKE_HOST.arch, x86_64 ) {
   LIBS += 64bitlib.a
}
else {
   LIBS += 32bitlib.a
}    
于 2012-04-30T20:47:35.380 に答える