한국어
Qt
 
환경: 윈도우7, Qt5.10
 
기본적으로 qt.io에서 배포된 Qt는 사전 빌드된 라이브러리들이 동적으로 링크된다. 즉, 응용프로그램이 실행 될때 사전 빌드된 DLL을 동적으로 참조한다.
문제는 이런 환경에서 개발된 응용프로그램은 배포시 문제가 발생하는데 Qt가 설치되어있지 않은 환경에서는 응용프로그램 자체만으로 실행이 불가능하기 때문에 필요한 dll 을 함께 패키지로 배포해야한다는 점이다. 
정적으로 빌드하게 되면 응용프로그램에 필요한 라이브러리들이 함께 링크되어 하나의 바이너리가 만들어 지므로 편리하게 배포할 수 있다. 또 응용프로그램 하나만 있는 경우 실제로 사용되는 Qt 코드만 링크되기 때문에 배포된 전체 크기가 동적 버전의 묶음보다 비교해서 더 작다는 장점이있다.
 
유의 해야할점은 Qt가 정적으로 링크되어 배포될 때 라이센스 문제가 있다는 것이다. 오프소스 프로젝트가 아니라면 반드시 라이센스 문제를 확인해야한다.
 
이렇게 응용프로그램을 정적 실행환경으로 만드려면 정적 버전의 Qt가 필요하다.
파워쉘 스크립트를 이용한 방법이 있고 파워쉘 버전 3.0이상에서 가능하다.
windows7은 보통 파워쉘 버전 2.0대여서 업데이트를 해줘야하지만 필자의 경우 (이상하게)업데이트 설치파일이 실행이 안되서 그냥 아래의 방법으로 진행하였다.

 

(윈도우7 이상은 파워쉘 버전이 3.0이상이므로 스크립트를 사용하면 편리할듯하다.)
 
Qt5.10다운로드 및 설치
온라인 인스톨러 다운로드 후 5.10(소스코드포함) 및 MinGW5.3.0을 체크하여 설치한다. (기본 C:\ 에 설치한다.)
install_qt.png

 

설치후에

C:\Qt 밑에 "static" 폴더 생성
C:\Qt\static 밑에 "5.10.0" 폴더 생성

 

C:\Qt\5.10.0 의 "src" 폴더를 "static" 에 복사
C:\Qt\Static\Src\qtbase\mkspecs\win32-g++ 폴더에 있는 qmake.conf 파일을 에디터로 열고 마지막에 아래 내용을 추가해준다.
QMAKE_LFLAGS += -static -static-libgcc
QMAKE_CFLAGS_RELEASE -= -O2
QMAKE_CFLAGS_RELEASE += -Os -momit-leaf-frame-pointer
DEFINES += QT_STATIC_BUILD
 
CMD를 실행 하고 환경 변수 등록
set Path=C:\Qt\Tools\mingw530_32\bin;%PATH%
 
CMD에서 "C:\Qt\Static\Src"로 이동한 후 Configure
configure -static -release -platform win32-g++ -prefix C:\Qt\Static\5.10.0 -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -no-openssl -opensource -confirm-license -make libs -nomake tools -nomake examples -nomake tests


아래 명령으로 빌드 및 설치를 실행한다. (두번째 명령은 경우에 따라 몇시간이 걸린다.)

mingw32-make -k -j4
mingw32-make -k install


필자의 경우 위 명령 중 python 의존성 에러가 발생하였다

"Project ERROR: Building QtQml requires Python."

python_error.png

 

혹시 위와 같은 에러가 발생한 경우 python도 설치한다.

설치 시 "Add Python 3.6 to PATH" 체크

파이썬 설치후에는 cmd를 새로 열고 위에서 했던 환경변수 설정부터 다시 해주자.

install_python.png

 

모든 컴파일 및 설치가 완료된 후

C:\Qt\Static\5.10.0\mkspecs\win32-g++ 폴더의 qmake.conf 를 에디터로 열고 마지막에 아래 내용을 추가한다.

CONFIG += static

 

QtCreator를 열고 Tools - Options - Build & Run - Qt Vesions의 add 를 클릭하여

C:\Qt\Static\5.10.0\bin\qmake.exe 를 추가 시켜준다.

Kits 탭으로 이동하여 add를 클릭하고 방금 추가 시켜준 qmake를 선택하고 컴파일러는 C:\Qt\Tools에 설치된 것으로 선택한다.

kits.png

 

이제 새 프로젝트를 생성하거나 기존 프로젝트를 열어 방금 추가해준 Kit으로 선택하여 qmake - Build를 하면 꾀 용량이 큰 exe실행 파일이 만들어진다.

번호 제목 글쓴이 날짜 조회 수
공지 Qt프로그래밍(QtQuick) Beginner를 위한 글 읽는 순서 운영자 2019.01.05 85676
58 QML과 QtQuick 모듈 개념과 기본 타입들 makersweb 2019.04.26 13371
57 QML 전역 객체 (Global Object) file makersweb 2019.04.10 1044
56 tslib의 ts_calibrate를 응용해서 Qt로 터치보정기능 구현 file makersweb 2019.04.06 1359
55 GPU가 없는 장치에서 Qt Quick을 사용 makersweb 2019.04.02 1854
54 QTextCodec클래스를 사용하여 유니코드와 EUC-KR 변환 makersweb 2019.03.25 2885
53 qInstallMessageHandler를 이용한 디버그 메세지 출력 제어하기 makersweb 2019.02.25 1346
52 Qt5기반 독립 프로세스(out-of-process)로 동작하는 가상키보드(virtual keyboard) file makersweb 2019.02.24 2618
51 Qml 기본 컴포넌트 강좌 (4) - 모델 리스팅(Listing) file 운영자 2019.02.23 5282
50 Qt Bluetooth를 이용한 시리얼(Serial) 통신 file makersweb 2019.02.17 3546
49 Qml 기본 컴포넌트 강좌 (3) - 배치(positioning) 컴포넌트 file 운영자 2019.02.10 4851
48 QString 문자열 다루기 예제 운영자 2019.01.26 39906
47 Qt SQL을 이용한 가벼운 데이터베이스 다루기 [1] file 운영자 2019.01.23 6932
46 구글 클라우드 Speech-To-Text API를 Qt기반(C++, Qml)테스트 [7] file makersweb 2019.01.20 2614
45 QNetworkAccessManager를 통해 HTTP POST 하는 예제 makersweb 2019.01.17 4740
44 Qt응용프로그램 실행 시 콘솔창(터미널)같이 띄우기 file makersweb 2019.01.16 4469
43 안드로이드 가상장치 사용 file makersweb 2019.01.13 1066
42 Qml 기본 컴포넌트 강좌 (2) [2] file makersweb 2019.01.05 8603
41 Qml 기본 컴포넌트 강좌 (1) file makersweb 2019.01.03 12039
40 QtWayland와 ivi-compositor file makersweb 2018.12.27 2396
39 Qml과 C++로 구현하는 GUI어플리케이션 file makersweb 2018.12.25 13895