Windows 환경에서 QT 프로그램 정적 라이브러리로 만들기
static library로 생성되지 않는 2가지 이유
- 자신의 프로젝트를 컴파일 할 때 gcc dll 타입으로 컴파일 된다.
- qt 자체가 dll 타입으로 컴파일된 파일들이 설치된다.
하지만 우리가 원하는 것은 간단한 프로그램을 만들어서 쉽게 복사 실행하는 배포판을 만들 수 있는 단일 실행 프로그램이다. 따라서 다음 해결 방법이 필요하다.
1번은 가장 쉽게 해결되는데, 자신의 프로젝트 파일에 *.pro 다은 문장을 삽입하면 된다.
QMAKE_CFLAGS_DEBUG += static
QMAKE_CFLAGS_RELEASE += static
QMAKE_LFLAGS += -static -static-libgcc -static-libstdc++
rebuild All 을 실행해보면 파일 사이즈가 약간 커지고 QT관련 라이브러리를 찾는 에러만 발생한다.
마지막으로 2번이 조금 까다로울 수도 있는데 인터넷을 검색해보면 대부분 ‘-static’ 옵션을 주라는 문서들만 보인다. 하지만 따라해 보아도 실행이 안되고 옵션이 먹히지 않아서 무슨 뜻인가 했는데 사이트들을 조금 더 뒤져보니 HowTo 문서보고 정확히 이해 할 수 있었다.
qt-project HowToDocument
결국 mingw-32 or 64를 통해서 새롭게 static으로 만들어야 한다는 것이다.
- 우선 설치된 sdk 파일을 복사해서 적당한 폴더명으로 만들고,
- c:\Qt\4.8.4\ -> c:\Qt\4.8.4_static
- 컴파일러가 있는 곳을 path로 지정하고,
- set PATH=%PATH%;C:\MinGW\bin
- 컴파일할 파일이 있는 곳으로 이동하고,
- cd c:\Qt\4.8.4_static
- make file을 생성한다.
- configure -static -release -no-exceptions /* 변경가능한 옵션*/
- 마지막으로 make를 실행한다.
- mingw32-make sub-src
시간을 좀(2시간이상) 걸린다. 하지만 한번 쯤 해보면 쉽게 이해할 수 있다.
(컴파일 오류에 관한 내용은 개인이 알아서 해결하길 바람)
진짜 마지막 작업은 IDE에서 새롭게 컴파일된 qmake을 적절히 연결하는 것뿐이다. 자세한 사항은 참고 사이트를 확인하길 바람.
(혹시나 잘 모를 사람을 위해서 추가)