1

有没有人使用 QT 和 OpenCV 的组合,并且有一个很好的方法来打包你的软件并部署给你的用户?我们开发的 QT Creator 有一个发布和部署按钮,但它似乎与生成的二进制文件没有什么不同,而不是常规构建和使用路径中库的动态链接。

我们主要对 Linux 和 Mac 感兴趣,但也想了解适用于 Windows 的好方法。

我们已经做了一些关于必须静态编译 QT 版本的研究,但这是否意味着每次在通用测试中构建项目时,我们都必须重新编译所有 QT?


更新!在此处的帮助下,我得到了 QT 静态编译并将其自身捆绑到 Ubuntu 上的二进制文件中。我现在的问题是出现错误,例如

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

当我尝试使用静态版本的 opencv 2.4.2 进行编译时

这是我所做的:

对我来说,诀窍是弄清楚“path/to/qt”是什么意思,以及在“-prefix”之后放什么。Suslik 的链接将我引向了这个:github.com/refuge/whitesheep/wiki/Compiling-Qt-statically,这大致相同,但帮助我找出了正确的语法以使一切顺利进行。最后我发现你需要下载库的 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 中,我选择“Projects>BuildSettings>Add”,我将这个新的构建设置称为“staticrelease”。在“Qt 版本:”下,我选择管理,找到包含全新 qmake 文件的“qt-everywhere-opensource-src-4.8.2”内的 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 \

这就是我卡住的地方。我编译了一个静态版本的opencv 2.4.2(在cmake-gui中关闭了BUILD_SHARED_LIBS),成功了,卸载了旧的opencv,安装了这个版本。现在我得到了 9 个奇怪的错误,比如

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

PS. 604kb 与 13.9 mb 的可分发文件大小的差异,就我们而言,这仍然不是那么大。

4

1 回答 1

2
  1. Qt 是 LGPL 的,因此静态链接它需要您公开源代码。这对你来说可能是也可能不是问题,但在你走这条路之前要确保。

  2. 在 Linux 上打包和发布取决于目标发行版是什么。看看这个:构建 Qt 应用程序 Linux。Shell 脚本是您的朋友。

  3. 对于 Mac,您需要遵循本指南:http: //doc.qt.io/archives/qt-4.7/deployment-mac.html

于 2012-07-06T17:38:46.123 回答