QT5.0.2 를 static 빌드를 해야 되는 과정에서 ICU 라이브러리로 필요하게되는데 해당 ICU사이트에서 배포하고 있는 바이너리 버전인 경우에는 MSVC2010 으로 되어있기도 하고, 또한 sicule.lib 같이 static build가 아닌 DLL 사용 빌드 형태이다.
그래서 static 빌드를 해야 하는데 그러기 위해서 필요한 순서를 정리해두려고 한다.
먼저 필요한것 부터 정리
0. MSVC 2012
MS Visual Studio 2012 또는 2010 이 설치되어있어 한다.
설치 디렉토리
C:\DEVTOOL\MSVC2012P
1. Cygwin 환경 준비
http://www.cygwin.com/ 에서 최신 Cygwin 다운로드 후 설치
설치에서는 Develope 관련 도구들 선택 설치할것
여기에서는
C:\DEVTOOL\Cygwin 에서 setup.exe 파일을 넣어두고, Cygwin 루트 디렉토리도 C:\DEVTOOL\Cygwin로 지정
2. ICU 소스 다운로드
http://site.icu-project.org/download 에서 다운로드 할 수 있으며, 현재 기준 최신 Release 가 ICU 51 버전이어서
http://download.icu-project.org/files/icu4c/51.1/icu4c-51_1-src.zip 를 다운로드 하면 된다.
여기서는 다운로드한 파일들을
C:\DEVTOOL\libsources\icu4c-51_1-src 경로 압축풀었다.
3. MSVC2012 를 이용한 static 빌드를 위한 몇가지 runConfigureICU 파일 수정하기
static 빌드가 문제가 없도록 하기 위해서는 runConfigureICU 파일을 수정해야한다.
수정한 파일은 runConfigureICU_static 파일명으로 변경
106,107 라인 comment out 처리 (MSVC 빌드에서는 불필요)
Cygwin/MSVC 플랫폼 설정부분에서
/MD 로 되어 있는 부분을 /MT로 바꾼다.
또한 링커용 설정에는
RELEASE_LDFLAGS='/NODEFAULTLIB:MSVCRT'
를 추가하고
DEBUG_LDFLAGS='/DEBUG /NODEFAULTLIB:MSVCRTD'
로 변경한다.
4. 빌드하기
4.1 MSVC를 이용한 빌드를 하기위해서는 관련한 환경설정을 준비해야한다.
Command line prompt 를 실행시킨뒤 C:\DEVTOOL\MSVC2012P\VC\vcvarsall.bat 를 실행한다
또는 아래 그림을 참고해서 시작프로그램에서 [VS2012용 개발자 명령프롬프트]를 실행해도된다.
Cygwin에 bin 디렉토리 path 를 추가한다. (bash를 사용해야 해서)
> SET PATH=%PATH%;C:\DEVTOOL\Cygwin\bin
그리고 ICU 소스 디렉토리로 이동 후 runConfigureICU_static 실행한다.
> cd C:\DEVTOOL\libsources\icu4c-51_1-src\source
static release 빌드인 경우
> bash runConfigureICU_static Cygwin/MSVC --prefix=/cygdrive/c/DEVTOOL/libs/icu-release-static-win32-msvc2012 --with-data-packaging=static --enable-static --disable-shared --enable-release --disable-debug
static debug 빌드인 경우
> bash runConfigureICU_static Cygwin/MSVC --prefix=/cygdrive/c/DEVTOOL/libs/icu-debug-static-win32-msvc2012 --with-data-packaging=static --enable-static --disable-shared --enable-debug --disable-release
참고로 dynamic 빌드(DLL생성) 일 때에는
shared debug
> bash runConfigureICU Cygwin/MSVC --prefix=/cygdrive/c/DEVTOOL/libs/icu-debug-shared-win32-msvc2012 --with-data-packaging=static --enable-shared --disable-static --enable-debug --disable-release
shared release
> bash runConfigureICU Cygwin/MSVC --prefix=/cygdrive/c/DEVTOOL/libs/icu-release-shared-win32-msvc2012 --with-data-packaging=static --enable-shared --disable-static --disable-debug --enable-release
그리고 나서 아래 메시지 처럼 설정 완료 표시가 나오면 .
ICU for C/C++ 51.1 is ready to be built.
=== Important Notes: ===
Data Packaging: static
This means: ICU data will be stored in a static library.
To locate data: ICU will use the linked data library. If linked with the stub l
ibrary located in stubdata/, the application can use udata_setCommonData() or se
t a data path to override.
Building ICU: Use a GNU make such as make to build ICU.
checking the version of "make"... 3.82.90 (we wanted at least 3.80)
ok
'make' 실행하여 빌드 진행한다. 빌드 후 에는 'make check' 실행하여 정상빌드 여부 확인한다.
> make
> make check
테스트 완료 결과
잘 끝났으면 설치한다.
> make install
'개발' 카테고리의 다른 글
2013.05.30 임베디드SW 컨퍼런스 후기 (0) | 2013.05.31 |
---|---|
QT SDK 5.0.2 with MS Visual Studio 2012 빌드 (Static) 하기 (0) | 2013.05.29 |
QT Installer 1.3 바이너리 배포버전 버그있다... (0) | 2013.04.17 |
QtSDK 사용시 log4cplus 에서 한글(Korean) 문제 (Windows 환경) (0) | 2013.04.02 |
V8 Javascript 한글문제 (with QTSDK C++ 환경) 조치 (0) | 2013.03.27 |