Qt5 Windows 배포 정리
Qt를 이용하여 실행파일을 만들었다면 이제 배포를 해야 하는 데 shared library를 사용하여 개발을 했다면 관련 dll을 함께 배포하여야 한다.
상용버전을 구매하였다면 static build 해서 이런 문제를 간단히 해결하겠지만 그렇지 않다면 다음 내용을 참고 해 보자.
Dependency Walker를 이용하면 이 프로그램이 의존하는 dll들의 목록을 살펴볼 수 있다.
dll 트리구조에서 빨간 아이콘은 시스템 dll이기 때문에 패스하고 회색의 dll 들을 Qt dll이 들어있는 폴더에서 찾아
(본인의 경우 C:\Qt\Qt5.4.1\5.4\mingw491_32\) 해당 dll들을 복사해 온다.
근데 이렇게 해도 실행이 안되는 데 플랫폼 플러그인인 qwindows.dll 을 찾기 때문이다.
이 dll은 특이하게 실행파일과 같은 경로에 복사해도 오류를 발생시키는 데 이유는 platforms 폴더를 만들어서 넣어놔야 하기 때문이다. 아마도 실행 시 기본으로 이 폴더를 찾는 듯 하다. (소스를 수정하면 찾는 폴더를 바꿀 수 있을지도...)
참고로 core, gui 를 사용하는 Qt 프로그램을 MinGW(MSVC용이 아님) release로 빌드했을 때 필요한 dll들은 다음과 같다.
Qt5Core.dll
Qt5Gui.dll
Qt5Widgets.dll
icudt53.dll
icuin53.dll
icuuc53.dll
libgcc_s_dw2-1.dll
libstdc++-6.dll
libwinpthread-1.dll
platforms/qwindows.dll
마지막으로 위 과정을 한방에 자동으로 해주는 프로그램이 준비되어 있는데 windeployqt.exe란 프로그램이다.
지금 사용하는 컴퓨터의 환경이 꼬여서 windeployqt를 쓸 수 없어 수동으로 배포파일들을 구성했는데 고생하지 말고 위 프로그램을 쓰도록 하자. ^^
정적빌드하시는 분들에겐 필요가 없을 수도 있습니다만..
Qt를 설치하면 빌드에 관련된 툴이 있는 bin디렉토리가 있습니다. 이 안에 보면 windeployqt.exe가 있습니다.
(예를들어 Qt.5.3.1 MinGW버전같은경우 C:/Qt/5.3/mingw482_32/bin)
이것은 작업한 실행화일의 디펜던시를 체크해서 필요한 화일들을 쉽게 복사해주는 프로그램인데요..
사용하는 법을 간단히 설명드리자면,
디렉토리를 생성해서 작업한 실행화일을 그곳에 복사한 후.. 대충 c:\qtdeploy\myapp.exe 이렇게 위치시켜보죠
Qt설치시 '시작'메뉴에 생성 되어있는 명령행프롬프트(반드시!)를 실행시킨 후
'c:\qtdeploy>c:\qt\5.3\mingw482_32\bin\windeployqt.exe myapp.exe' 해주면
myapp.exe에 필요한 모든 화일들이 c:\qtdeploy 디렉토리 안에 복사됩니다.
제가 아직은 NSIS에만 익숙한고로 이 방법이 상당히 편하네요 ^^