我最近在QT Creator框架中编程了一个项目,该项目既使用QT库(例如QT_Widget),也使用openCV库(例如openCV_tracking)。我的项目包括.ui,.pro,main.cpp和一些带有.h和.cpp文件的类。
我的.pro文件是:
QT += \
core gui \
concurrent widgets
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = Version7
TEMPLATE = app
DEFINES += QT_DEPRECATED_WARNINGS
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
CONFIG += \
c++11 \
cmdline
SOURCES += \
main.cpp \
mainwindow.cpp \
videoprocessor.cpp \
robottracker.cpp \
robotdetector.cpp \
obstaclesdetector.cpp \
pathcapture.cpp
HEADERS += \
mainwindow.h \
videoprocessor.h \
robottracker.h \
robotdetector.h \
obstaclesdetector.h \
pathcapture.h
FORMS += \
mainwindow.ui
# including openCV needed files
INCLUDEPATH += E:\\MyOpenCV\\install\\include
INCLUDEPATH += C:\\openCV\\opencv\\build\\include
LIBS += -LE:\\MyOpenCV\\install\\x64\\vc15\\lib \
-lopencv_tracking430
LIBS += -LC:\\openCV\\opencv\\build\\x64\\vc15\\lib \
-lopencv_world430
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
它可以在QT Creator中正常运行;但是现在我想与团队共享它,为此,我想从中构建一个独立的exe文件,该文件静态链接项目中使用的所有库。有人可以指导我如何使用QT Creator或其他一些选项吗?互联网上有一些建议,但是没有用。
我前一阵子尝试过,但最终放弃了,尽管绝对有可能。
Qt隐藏如此之多的原因是,他们更喜欢人们动态链接到他们的库,因为它既允许用户随意更新/更改Qt dll,又(我认为这是真正的原因)使开发人员正在使用他们的套件变得更加明显。
我将引导您朝我认为应该采取的方向发展,但是我不太确定您会多么成功。
首先,您需要静态地构建实际的Qt库。我将假设您使用Qt Creator附带的MinGW作为编译器。根据以下教程https://wiki.qt.io/Building_a_static_Qt_for_Windows_using_MinGW,您可以下载以下powershell脚本(确保已安装powershell):https://sourceforge.net/p/qtlmovie/code/ci/v1.2.16/tree/build/windows-build-qt-static.ps1?format=raw。只要您在C:\ Qt下安装了Qt,并且在此文件夹中有一个名为“ Static”的子目录,您就可以简单地运行此脚本并等待Qt内置到该文件夹中。
其次,您需要在应用程序中链接到Qt库。打开Qt Creator,转到“工具”>“选项”>“构建并运行”。 Qt教程说以下内容:
转到标签“ Qt版本”。在“ qmake位置”表中,必须有一个“自动检测”部分和一个“手动”部分。在“自动检测”部分,应该存在一行名为“ Qt 5.5.0 MinGW 32位C:\ Qt \ Qt5.5.0 \ 5.5 \ mingw492_32 \ bin \ qmake.exe”的行。 “手册”部分最初是空的。
单击“添加”,浏览到C:\ Qt \ Qt5.5.0 \ bin并选择“ qmake.exe”。版本名称自动设置为“ Qt 5.5.0(5.5.0)”。您应该设置一个更有意义的名称,例如“ Qt 5.5.0 MinGW Static 32bit”
然后转到“套件”标签。同样,必须有一个“自动检测”部分和一个最初为空的“手动”部分。点击“添加”。设置一个有意义的名称,例如“ Desktop Qt 5.5.0 MinGW Static 32bit”。如果遵循上述建议,请在“ Qt版本”字段中选择名为“ Qt 5.5.0 MinGW Static 32bit”的静态环境。
应该是这样。不幸的是,我无法自己尝试一下,但这应该是常规步骤。许多教程似乎很冗长,但是通常,如果您逐步遵循它们,它们最终会奏效。
祝你好运!