有没有人使用 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 的可分发文件大小的差异,就我们而言,这仍然不是那么大。