개발2013.04.24 16:19

  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









Posted by 퍼니로거 즐건록
TAG , ,