2013-08-19 13 views
3

Qt 5.1의 최소 정적 빌드를 만드는 방법을 찾고 있습니다. 최소한, 위젯 클래스의 기본 세트 만 사용할 수있는 빌드를 의미합니다 (OpenGL 캔버스/위젯을 통한 2D 그래픽 가속 포함). 나는 MSYS 및 도구 번들뿐만 아니라 MinGW-builds GCC 4.8.1을 사용하여 Windows 7 32 비트에서 정적 빌드를 목표로합니다.Qt 5.1의 모듈과 그 상호 의존성은 무엇입니까?

전체 소스 트리를 다운로드했으며 OpenSSL 및 ICU (최신 OpenSSL이 컴파일되지 않음)와 같은 패키지의 종속성으로 인해 컴파일에 약간의 문제가 발생했습니다. 필자는 이러한 패키지의 종속성을 피할 수 있고 동시에 Qt 5.1의 최소 정적 빌드를 달성하여 최종 실행 파일의 크기가 거대하지 않다는 것을보고 싶었습니다.

이 목록을 살펴 보았습니다 : http://download.qt-project.org/official_releases/qt/5.1/5.1.0/submodules/.

Q1 : 멋진 QT 빌드를 사용하려면 기본 모듈을 선택해야합니까?

질문 2 :이 모듈은 어떤 방식 으로든 서로 상호 의존하고 있습니까? (모두 "qtbase"에 종속되어 있다고 가정합니다)?

Q3 : 구축, 내 Qt는의 구성을 해제하려면 : 나는 (등 "qtxmlpatterns", "qtx11extras", "qtwebkit"예를 들어), 그 목록에서 이름을 사용하십니까?

또한 Qt는 5의 다양한 서브 모듈의 설명과 함께, 좋은 것? 누군가가이 주제에 대해 밝게 빛나는 단어로 링크 나 문서를 가리킬 수 있다면 좋을 것입니다.

+1

이제 Tumbleweed 배지를 받았습니다. 감사. –

답변

0

나는이 같은 목표를 공유했습니다. Qt를 "축소"하여 라이브러리/DLL의 작은 하위 집합 만 만들고 나머지는 생략하고자했습니다.

적어도 Mac OS X에서 성공했습니다.이 접근 방식은 다른 플랫폼에서도 작동 할 것이라고 생각합니다.

"트릭은"configure "스크립트에 대해 몇 가지 종류의 제외 플래그를 찾는 것이라고 생각했지만 그럴 수는 없습니다. 여기

내가 무슨 짓을 :

  1. 다운로드 소스 배포판 (내 경우에는, Qt는 - 사방 - 오픈 소스-SRC-5.1.1). 물론, 그것을 모두 추출하십시오.

  2. 다음 세 개의 "pro"파일을 편집하십시오. 이 파일들은 qt 특정 형식 (그러나 일반 텍스트)입니다. Qt (qmake를 통해)가 메이크 파일을 생성하는 데 사용하는 플랫폼 독립적 프로젝트 파일입니다.

    • qtbase/SRC/src.pro
    • qtbase/SRC/플러그인/plugins.pro
    • qtbase/예/examples.pro

"pro"파일에 대한 모든 변경 사항은 삭제되었습니다. dbus, ipc, network, qtconcurrent, sql, xml, sqldrivers, qdbusxml2cpp, qdbuscpp2xml, src_dbus, src_concurrent, src_sql, src_network에 대한 참조를 삭제했습니다.

마지막 부분이 두렵게 들릴 수 있습니다. 정말로 그렇지 않았습니다.

pro 파일에는 모듈 이름, 플러그인 이름 및 디렉토리 이름 목록이 포함되어 있습니다. 그것은 (예를 들어) 모든 SQL 관련 라인을 삭제하는 방법과는 상당히 다른 것처럼 보였습니다.

3 단계

일반적인 구성/확인/설치합니다.

./configure -prefix ~/my_test_dir/ 
make -j2 module-qtbase 
make -j2 module-qtbase-install_subtargets 

성공 : 그러나 수 있도록 전달 "모듈 qtbase"인수를 확인합니다. 이것은 기본 요소 (QtCore, QtGui, QtOpenGL, QtWidgets) 만 빌드하고 설치하고 QtConcurrent, QtMultimedia, QtSql 및 QtWebKit과 같은 지원되는 모든 dylib를 생략했습니다.

+0

나는 이것을 어느 시점에서 시도해야 할 것이다. 나는 오래 전에 포기했다. 나는 .pro 파일 자체를 바꾸는 것이 필요하다고 생각하지 못했다. 나는 Windows 7 (현재 32 비트)을 사용 중이며 컴파일 과정에서 상대적으로 멀리 떨어져 있습니다. 어떤 시점에서, 30-45 분 동안, ICU와의 연결이 사물을 엉망으로 만들고 프로세스가 중단됩니다. 나는 그것에 결코 돌아 오지 않았다. 아마도 다시 시도해야합니다. –

0

ICU는 정적으로 링크 할 수 있습니다, 당신은 (문서를 참조)를 크기를 줄이기 위해 사용자 정의 할 수 있습니다. 기본적으로 데이터도 크기 때문에 필요한 데이터의 양을 모릅니다. 하나의 언어로 실행하기에 충분한 데이터 만 포함 할 수 있습니다.

답변의 일부만.

+0

고마워. 나는이 질문이 황폐하고 잊혀진 줄 알았다. Qt 5.1의 개별 모듈에 대한 지식이 있습니까? –

+0

@OleThomsenBuus 아니요, 죄송합니다. 저는 ICU에서 일하며 ICU 질문을 찾고있었습니다. 그래도 다른 대답을 참조하십시오. –

0

Qt 모듈을 비활성화 할 필요가 없습니다. Qt를 사용하는 각 응용 프로그램은 사용하고 링크하는 모듈을 결정합니다. 기본 콘솔 전용 응용 프로그램은 코어 모듈 만 사용할 수 있습니다. 이것이 바로 Qt에서 웹 서비스를 만들 때 사용할 것입니다.