프로그램이라는게 혼자쓸려고 만드는 경우도 있지만, 처음부터 배포를 목적으로 하거나, 혼자쓰다가 배포하고 싶어지기도 하죠.
Qt로 짠 프로그램을 배포할때 몇가지 주의해야할 사항을 적어봅니다.
1. 라이센스 표시
상용 라이센스를 구입한 경우라면 해당되지 않지만, 오픈소스에디션의 Qt를 이용한 경우에는 반드시 GPL에 따라서 배포해야합니다(따르지 않을 경우 라이센스 위반입니다).
우선 GPL 영어 전문을 포함시켜야합니다. 그리고 소스배포가 아니라 바이너리 배포인 경우, 소스를 함께 배포하거나 소스를 제공받을 수 있는 방법을 명시해야합니다. 보통 온라인상에서 소스와 바이너리를 함께 다운 받을수 있도록 하는 경우가 많습니다.
이부분은, 라이센스를 지키겠다는 의지와 노력을 보이는 것이 중요하니, 너무 라이센스의 법적인 부분에 대해서 얽메여서 어떻게 해야하나 전전긍긍할 필요는 없습니다.
2. 라이브러리
당연한 이야기이지만, Qt로 만든 프로그램은 Qt 라이브러리가 있어야 실행 할 수 있습니다. 리눅스등에서 KDE환경이라면 보통 기본적으로 Qt가 깔려있으니 문제 없지만, 그렇지 않은 경우(윈도우, Gnome환경 등)에는 상대방에게 Qt 라이브러리를 설치하도록 하거나 이쪽에서 제공해줘야겠죠.
리눅스의 경우는 대부분 저장소에서 설치하면 되므로 큰 문제가 되지 않습니다만, 윈도우(맥은 잘 모르겠네요)의 경우는 좀 귀찮아집니다.
이에 대한 해결법으로 보통 두가지 방법이 있습니다.
1) 정적 라이브러리 이용
빌드시에 정적 라이브러리를 이용하면, 실행파일에 라이브러리 내용도 전부 포함되므로, 따로 Qt라이브러리 파일을 배포할 필요가 없어집니다. 다만, 이경우 여러개의 실행파일을 이용하는 어플리케이션이라면, 각각의 실행파일에 중복되어 Qt가 들어가 용량이 너무 커질수 있습니다.
Qt로 정적빌드하는 법은 팁1편을 참고하세요.
2) 동적 라이브러리 이용
동적 라이브러리를 이용하기 위해서는, 윈도우에서는 같은 폴더내의 dll파일을 인식하므로, 실행파일과 라이브러리 파일들을 복사해서 함께 배포하면 됩니다.
이때 모든 파일을 배포할 필요는 없고, 빌드시에 링크된 라이브러리 파일만 복사하면 됩니다.
예를들어 네트워크 관련 모듈을 이용하지 않았다면, QtNetwork라이브러리 파일은 필요없겠죠.
마지막으로, VC++을 이용하여 빌드된 경우, 재배포용 패키지(VCRedist)가 필요한 경우가 있습니다.
이것은 Qt로인한 것이 아니라 VC++(아마도 2005이후?)로 빌드된 모든 프로그램에 해당되는 것입니다.
관련패키지는 마이크로소프트 홈페이지에서 다운 받을 수 있습니다.
그외에도 더 자세한 설명이 어시스턴트의 'Deploying an Application on Qt/Windows'항목에 적혀있으므로 이쪽도 참고하시기 바랍니다.

