저번에는 동적 빌드에 대해 글을 썼으니 이번에는 정적 빌드에 대해 이야기해보겠습니다.
dll 파일이나 기타 필요한 파일을 같이 배포해야하는 동적 빌드와 달리,
정적 빌드를 하면 실행 파일만 단독으로 배포하면 되기 때문에 깔끔하고 편리하죠
물론 오픈소스로 공개해야한단 점이나, 상용 라이센스가 필요하단 부분도 있으니 상황에 따라 확인은 필요합니다.
설치할 게 있어서 시간은 좀 걸리지만 막상 해보면 쉬우니 천천히 따라오시면 됩니다.
동적 빌드 원하시는 분들은 아래 내용 참고해주세요.
[Qt] 실행 파일 배포하기(동적 빌드)
C++로 작업하는 Qt...정적 빌드해서 배포하면 실행 파일만 있으면 돼서 깔끔한데오픈소스로 공개하거나 상용 라이센스를 구매해야하기 때문에dll 파일 때문에 번거롭긴 하지만 내부 배포할 때는
pieminslog.tistory.com
C 드라이브 밑에 Qt 폴더를 찾아가서 그 안에 MaintenanceTool을 실행합니다.
필요한 컴포넌트(Source)를 추가할 건데 경고 문구가 뜨네요.
'At least one valid and enabled repository required for this action to succeed'
해결하기 위해 아래 있는 Settings에 들어갑니다.
repositories가 없어서 뜨는 문구이니 설정해줍니다.
User defined repositories에
http://download.qt-project.org/online/qtsdkrepository/windows_x86/root/qt
를 추가해주면 됩니다.
username이나 password 따로 설정 안해줘도 됩니다.
저는 한국어 설정을 해놨더니 한국어로 바뀌었네요
필요시 update도 진행합니다.
오랜만에 진행하면 거의 하라고 할 건데 필요한 부분만 선택해서 하시면 됩니다.
Source 체크해서 추가해주시면 되는데
먼저 설치했던 구성요소들도 전부 체크해주셔야 합니다
다음은
C:\Qt\Qt설치한qt버전\설치한qt버전\Src\qtbase\mkspecs\win32-g++ 으로 가서 qmake 파일에 해당 문구를 추가해줍니다.
QMAKE_CFLAGS_RELEASE += -Os -momit-leaf-frame-pointer
QMAKE_LFLAGS = -static -static-libgcc
qt 콘솔창 열어서 qtbase 폴더로 이동합니다.
그리고 아래 명령어 실행시켜줍니다.
명령어 한줄한줄 기본 30분~ 1시간 정도 걸리니 인내를 가집시다.
configure -static -platform win32-g++ -prefix "C:\Qt\Qt5_static" -debug-and-release -opensource -confirm-license -nomake examples -nomake tests -nomake tools -opengl desktop -no-angle
prefix에 적힌 경로에 생성되는데 위치와 폴더명은 편한대로 바꾸시면 됩니다.
mingw32-make -k -j4
mingw32-make -k install
3가지 모두 에러 없이 끝났다면 준비 완료입니다.
Qt를 실행합니다.
Qt 상단에 Tools -> Option에 들어가서 Qt Versions에 들어갑니다.
Manual에서 Add를 하고 설치된 경로에 qmake.exe 파일을 추가해줍니다.
qmake 파일 경로 : C:\Qt\Qt5_static\bin
Kits로 넘어와서 이름을 구분하기 쉽게 Static 등으로 설정 후 Qt version을 아까 설정해준 버전으로 선택합니다.
projects로 넘어와서 build 설정을 새로 만든 Qt_Static으로 하고 빌드해주면 정적 빌드 성공입니다.
**여담으로 빌드 후에 이전에 잘되던 코드에서 에러가 발생하는 경우 컴파일러 문제일 가능성이 높으니 확인해줍니다
기존 version과 컴파일러 버전이 동일한 지 확인해주면 됩니다.
참고 :
https://stackoverflow.com/questions/22775906/how-to-update-component-in-qt-5-2-1