1

QTとOpenCVの組み合わせを使用していて、ソフトウェアをパッケージ化してユーザーに展開するための優れた方法論を持っている人はいますか?私たちが開発しているQTCreatorには公開とデプロイのボタンがありますが、パス内のライブラリへの動的リンクを通常構築して使用する場合とは、生成されたバイナリと何ら変わりはないようです。

私たちは主にLinuxとMacに関心がありますが、Windowsの優れた方法についても聞きたいと思います。

QTのバージョンを静的にコンパイルする必要があることについて少し調査しましたが、一般的なテストでプロジェクトをビルドするたびに、すべてのQTを再コンパイルする必要があるということですか?


アップデート!ここからの助けを借りて、私はQTを静的にコンパイルし、Ubuntuのバイナリにバンドルしました。今の私の問題は、次のようなエラーが発生することです

":-1: error: error: avformat: No such file or directory"

opencv2.4.2の静的バージョンでコンパイルしようとすると

これが私がしたことです:

私にとっての秘訣は、「path / to / qt」の意味と、「-prefix」の後に何を置くかを理解することでした。Suslikのリンクから次のようになります:github.com/refuge/whitesheep/wiki/Compiling-Qt-静的にこれはほぼ同じですが、すべてを実行するための正確な正しい構文を理解するのに役立ちました。最後に、 qt-everywhere tarのライブラリをダウンロードし、それを解凍してそこに移動し、このフォルダとして「path / to/qt」を使用してコマンドを実行する必要があることがわかりました。したがって、私のコマンドは次のようになりました

cd /home/biotracking/qt-everywhere-opensource-src-4.8.2
./configure -static -prefix /home/biotracking/qt-everywhere-opensource-src-4.8.2 

次にQtCreatorで、[プロジェクト]>[ビルド設定]>[追加]を選択します。この新しいビルド設定を「staticrelease」と呼びます。「Qtバージョン:」で「管理」を選択し、「qt-everywhere-opensource-src-4.8.2」内の新しいqmakeファイルを格納しているbinフォルダーを見つけて選択します。これで、QTはこの静的バージョンのQTを使用して、ファットバイナリファイルを作成します(ただし、それほど長くはかからないようですが、これは素晴らしいことです!)

次に、Qt-OpenCvプロジェクトの.proファイルに移動し、静的コマンドを追加する必要があったため、次のようになります。

QT       += core gui

TARGET = AntennateSRC
TEMPLATE = app


CONFIG+=static
QMAKE_LFLAGS += -static
QMAKE_LFLAGS += -static-libgcc

static{
DEFINES += STATIC

}


unix {
        CONFIG += link_pkgconfig
        PKGCONFIG += opencv
        PKGCONFIG += pcl_io-1.6
#PKGCONFIG += pcl_libraries

}
SOURCES += main.cpp\
        antennate.cpp \
    Track.cpp \
    ICPTracker.cpp

HEADERS  += antennate.h \
    Track.h \
    ICPTracker.h


FORMS    += antennate.ui

RESOURCES += antennate.qrc \

これは私が立ち往生しているところです。私はopencv2.4.2の静的バージョンをコンパイルし(cmake-guiでBUILD_SHARED_LIBSをオフにしました)、それを作成し、古いopencvをアンインストールし、このバージョンをインストールしました。そして今、私は次のような9つの奇妙なエラーを受け取ります

:-1: error: error: swscale: No such file or directory

PS.604kbと13.9mbの配布可能なサイズの違いは、私たちに関する限り、まだそれほど大きくはありません。

4

1 に答える 1

2
  1. Qt は LGPL されているため、静的にリンクするには、ソース コードを公開する必要があります。これは問題になる場合とそうでない場合がありますが、そのルートに進む前に確認してください。

  2. Linux でのパッケージ化と公開は、対象のディストリビューションによって異なります。これをチェックしてください:Building Qt Application Linux。シェルスクリプトはあなたの友達です。

  3. Mac の場合、このガイドに従う必要があります: http://doc.qt.io/archives/qt-4.7/deployment-mac.html

于 2012-07-06T17:38:46.123 に答える