создать автономный exe-файл из проекта QT + openCV, запущенного в QT Creator - PullRequest
0 голосов
/ 16 июня 2020

Я совсем недавно запрограммировал проект в среде 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 без проблем; но теперь я хочу поделиться им со своей командой, и для этого я хочу создать из него автономный exe-файл, который статически связывает все библиотеки, используемые в проекте. может кто-нибудь посоветовать мне, как я могу сделать это с помощью QT Creator или некоторых других вариантов? в inte rnet было несколько предложений, но ни одно не помогло.

1 Ответ

0 голосов
/ 16 июня 2020

Я пробовал это некоторое время go, но в конце концов сдался, хотя это определенно возможно.

Причина, по которой Qt так скрывает, как это сделать, заключается в том, что они предпочитают, чтобы люди динамически связывались со своими библиотеки, поскольку они позволяют пользователям обновлять / изменять библиотеки Qt по своему усмотрению и (что, я думаю, является настоящей причиной) делает более очевидным, что разработчик использует их пакет.

Я расскажу вам направление, которое, как мне кажется, должно быть принято, но я не слишком уверен, насколько вы добьетесь успеха, к сожалению. Я предполагаю, что вы используете MinGW, поставляемый с Qt Creator, в качестве вашего компилятора. Согласно следующему руководству 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. Пока у вас установлен Qt в C: \ Qt и в этой папке есть подкаталог с именем «Stati c», вы сможете просто запустить этот сценарий и дождаться, пока Qt встроится в эту папку.

Во-вторых, вам необходимо связать библиотеки Qt в вашем приложении. Откройте Qt Creator, go в Инструменты> Параметры> «Сборка и запуск». В руководстве по Qt говорится следующее:

Go для вкладки «Версии Qt». В таблице «qmake location» должны быть части «Автоопределение» и «Вручную». В части «Автоопределение» должна быть одна строка с названием «Qt 5.5.0 MinGW 32bit 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 Stati c 32bit"

Затем go на вкладке «Наборы». Опять же, должна быть часть «Автоопределение» и изначально пустая часть «Вручную». Щелкните «Добавить». Задайте осмысленное имя, например "Desktop Qt 5.5.0 MinGW Stati c 32bit". В поле «Версия Qt» выберите среду stati c с именем «Qt 5.5.0 MinGW Stati c 32bit», если вы следовали приведенному выше совету.

Нажмите «Добавить комплект» в верхнем левом углу и выберите свой стандартный c комплект с именем «Desktop Qt 5.5.0 MinGW Stati c 32bit», если вы следовали приведенному выше совету.

Так и должно быть. К сожалению, я не могу попробовать это самостоятельно, но это должна быть общая процедура. Многие учебники кажутся многословными, но, как правило, если вы будете следовать им шаг за шагом, в конце концов они сработают. * "в приведенных выше инструкциях. Я считаю, что это неверно, и это то, что они на самом деле имеют в виду, так что, возможно, попробуйте вместо этого, хотя я не уверен.

Удачи!

...