2012-07-05 1 views
1

누구나 QT와 OpenCV를 함께 사용하고 소프트웨어 패키징 및 사용자에게 배포하는 좋은 방법이 있습니까? 우리가 개발 한 QT Creator에는 게시 및 배포 버튼이 있지만 일반적인 건물보다 생성 된 이진 파일과 경로의 라이브러리에 동적 링크를 사용하는 것과는 다른 것을 수행하지 않습니다.단일 실행 파일에서 QT와 OpenCV를 연결하는 QT Creator 내의 배포 및 정적 패키시

우리는 주로 Linux와 Mac에 관심이 있지만 Windows 용 좋은 방법에 대해서도 듣고 싶습니다.

정적으로 QT 버전을 컴파일해야한다는 연구가 있었지만 일반적인 테스트에서 프로젝트를 빌드 할 때마다 QT를 모두 다시 컴파일해야 할 필요가 있습니까?


업데이트! 여기에서 도움을 받아 QT를 정적으로 컴파일하고 우분투에서 바이너리로 묶습니다. 내 문제는 지금은 OpenCV의 다음 2.4.2

의 정적 버전으로 컴파일 할 때 나는 그런

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

같은 오류를 얻을 수 있다는 것은 내가 무슨 짓을했는지 :

나를 위해 트릭은 파악했다 "path/to/qt"가 의미하는 것과 "-prefix"다음에 넣을 내용 Suslik의 링크는 나를 이렇게 안내합니다 : github.com/refuge/whitesheep/wiki/Compiling-Qt-statically 이것은 거의 똑같은 것이지만 모든 것을 얻으려는 정확한 정확한 구문을 파악하는 것을 도왔습니다. 마지막에 을 다운로드하고 압축을 풀고이 폴더로 "path/to/qt"를 사용하여 명령을 실행해야합니다. 따라서 내 명령은 내가 "프로젝트가> BuildSettings> 추가를"나는 "staticrelease"로 설정이 새로운 빌드를 호출 선택 QtCreator에서이

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

다음처럼 보였다. "Qt 버전 :"에서 관리를 선택하고 새로운 qmake 파일을 저장하고 선택하는 "qt-everywhere-opensource-src-4.8.2"안의 bin 폴더를 찾습니다. 이제 QT는 QT의 정적 버전을 사용하여 좋은 이진 파일을 만듭니다. (더 이상 오래 걸리지 않습니다. 멋진 데요!)

그런 다음 내 Qt에서 내 .pro 파일로 이동해야했습니다. -OpenCv 프로젝트에 다음과 같은 정적 명령을 추가하십시오.

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 이상한 오류가 아직까지 우리에 관한 한 그 거대한 아니다 13.9 MB, 대 604킬로바이트의 distributables의 크기

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

PS.The 차이처럼 얻을.

답변

2
  1. Qt는 LGPL이되므로 정적으로 링크하려면 소스 코드를 공개해야합니다. 이것은 당신을 위해 문제 일 수도 있고 아닐 수도 있지만, 당신이 그 길을 가기 전에 반드시 확인하십시오.

  2. Linux에서 패키징 및 게시는 대상 배포판이 무엇인지에 따라 다릅니다. 이것을 확인하십시오 : Building Qt Application Linux. 쉘 스크립트는 당신의 친구입니다.맥에 대한

  3. ,이 가이드는 따르십시오 : http://doc.qt.io/archives/qt-4.7/deployment-mac.html

+0

나는 그것을 확인하고 어떻게되는지보고 있습니다! 조언 해주셔서 감사합니다! 또한 예, 우리가하는 모든 일은 전적으로 오픈 소스이므로 소스 코드를 무료로 사용할 수 있습니다. 감사! – blorgggg

+0

@blorgggg 리눅스에 배포 할 때 가치있는 일이라면 사용자가 qt를 정적으로 링크하지 않도록하는 것이 좋습니다 (debs 및 rpms를 사용하면 패키지 관리자에게 의존하여 얻을 수 있습니다). 당신을 위해). 이렇게하면 배포 가능 용량을 줄일 수 있습니다. – MrFox

+0

고마워, 그래도 우리는 가능성이 있다고 생각하고있다. 604kb 대 13.9MB의 배포판 크기의 차이처럼 보이지만, 여전히 우리가 우려하는만큼 크지는 않다. 우리 고객 (NSF 보조금으로 일하는 곤충 과학자)이 파일 크기가 약간 큰 것은 신경 쓰지 않고 다운로드하고 클릭하면 작동합니다! 또한, 우리는 mac 같은 복수의 시스템에 전달하고자하므로 – blorgggg