한국어
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실행 파일이 만들어진다.

번호 제목 글쓴이 날짜 조회 수
33 QML에서 동적으로 텍스트 다국어 처리 file makersweb 2018.11.04 53
32 Qt Installer Framework - 패키징, 설치프로그램 제작 file makersweb 2018.10.14 88
31 Qt 응용프로그램 배포(windows) file makersweb 2018.10.10 91
30 소스코드에서 환경변수 가져오기와 설정하기 makersweb 2018.10.08 40
29 표를 만들고 PDF문서로 출력하기 file makersweb 2018.09.30 60
28 Qml에서 키보드 입력 이벤트 핸들링 file makersweb 2018.08.09 139
27 Qml 어플리케이션 정적 빌드 file makersweb 2018.07.27 142
26 Qt Bluetooth 관련 기능 확인 사항 makersweb 2018.07.10 132
25 Qml 및 C++개발시 유용한 팁 makersweb 2018.04.06 376
24 Qt Version확인 방법 makersweb 2018.03.29 366
23 초보자를 위한 첫번째 프로젝트 - QML로 만드는 Hello World file makersweb 2018.03.16 597
22 Windows에서 라즈베리파이3 Qt 어플리케이션 개발 및 원격 실행 file makersweb 2018.02.23 1301
21 Windows에서 라즈베리파이3용 Qt5.10.0 크로스컴파일 file makersweb 2018.02.23 2074
» Windows환경에서 mingw로 Qt 5.10 정적(static)빌드 file makersweb 2018.02.01 1110
19 다국어 지원 어플리케이션 개발 file makersweb 2018.01.27 320
18 Qt 어플리에이션 전역에 폰트 설정 makersweb 2018.01.24 402
17 Qt 3D Studio 시작하기 file makersweb 2018.01.11 347
16 QPA 플러그인과 HTML5 Backend file makersweb 2017.12.27 47
15 임의의 메모리 영역(QImage)에 QPainter를 이용하여 그리기 makersweb 2017.12.19 268
14 QML에서 undefined를 확인하는 방법 makersweb 2017.11.29 115