한국어
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 90598
» Windows환경에서 mingw로 Qt 5.10 정적(static)빌드 file makersweb 2018.02.01 6361
19 다국어 지원 어플리케이션 개발 file makersweb 2018.01.27 3612
18 Qt 어플리에이션 전역에 폰트 설정 makersweb 2018.01.24 6507
17 Qt 3D Studio 시작하기 file makersweb 2018.01.11 4440
16 QPA 플러그인과 HTML5 Backend file makersweb 2017.12.27 1441
15 임의의 메모리 영역(QImage)에 QPainter를 이용하여 그리기 file makersweb 2017.12.19 4277
14 QML에서 undefined를 확인하는 방법 makersweb 2017.11.29 2087
13 QPA 플러그인과 EGLFS file makersweb 2017.11.21 4897
12 타임스탬프( timestamp) 유닉스 시간 makersweb 2017.10.19 2536
11 Qt Logging Rule, Qt 프레임워크 로그 출력 makersweb 2017.01.13 4803
10 QString 문자열에서 숫자만 추출해서 QString으로 반환 makersweb 2017.01.10 4093
9 멀티 스레드환경, 스레드에 안전한 이벤트처리 makersweb 2016.10.27 5867
8 Ubuntu Linux에서 Qt Creator 설치 file makersweb 2016.03.06 11717
7 QtConcurrent를 이용하여 쓰레드를 만드는 방법과 MapReduce file makersweb 2016.01.24 10119
6 Qt 프로그래밍의 시작 makersweb 2015.10.25 15498
5 Qt의 스레드간 시그널 슬롯의 커넥션타입 [1] makersweb 2015.10.24 11435
4 Qt의 시그널 슬롯 시스템 file makersweb 2015.10.20 25237
3 QQuickImageProvider 를 이용한 Qml 에서 이미지 표시 makersweb 2015.10.18 6681
2 Qml 사용자 ScrollBar 구현 file makersweb 2015.07.24 7128
1 z-order 를 컨트롤 하기위한 방법 makersweb 2015.05.13 7584