QT 5.0.2 로 업그레이드 하고 아직 프로젝트에는 적용해보진 못하고 테스트 중인 상태인데.  


QT Installer 1.3  버그때문에  QT Installer를 다시 빌드하려고 하다보니.


 먼저  QT 5.0.2를 소스를 가져다 빌드를 했다.


   QT는 상용 라이센스와 LGPL 라이센스를 적용하고있는데.  LGPL라이센스를 사용하는 경우에는 DLL링크만 허용하고 있어 Static 빌드 Library를 쓸일이 없지만 .  QT Installer 는 LGPL 라이센스 이면서 QT Library를  Static Build가 되어있는 구조라 QT Installer 를 재빌드 하려면 어쩔수 없이 QT를 Static Build 한뒤에 QT Installer 를 빌드해야 해서.  이런 상황이 된다.  (인스톨러 특성상 하나의 실행파일로 떨어져야 하기때문에...)


어째든 QT SDK 5.0.2 를 빌드하려고 하는데.  오픈소스 빌드가 그러하듯 수차례... 빌드 실패 후 겨우 성공하게 되서 정리해 본다.


먼저 필요한 것들 정리하기


1. Perl 설치 

   기존설치된 Perl이 없다면  

ActivePerl http://www.activestate.com/activeperl/downloads  에서 (x64버전) 다운로드 설치


2. Python 설치

   V8.lib를 빌드하기 위해서는 python 이 필요하다.  

ActivePython http://www.activestate.com/activepython/downloads  에서 다운로드(2.7.x x64버전 ) 설치 



1. OpenSSL static 빌드 준비

    2.1  OpenSSL  Library Source

         http://www.openssl.org/source/openssl-1.0.1e.tar.gz

         압축해제 경로 - > C:\DEVTOOL\qt5build\openssl-1.0.1e_src


    2.2  nasm 어셈블러 

   http://www.nasm.us/ 에서 다운로드 링크로 가서 최신버전 다운로드

 여기서는 아래 링크의 zip 파일을 내려받음

         http://www.nasm.us/pub/nasm/releasebuilds/2.10.07/win32/nasm-2.10.07-win32.zip

  

        다운로드 받아 압축해제 

                   설치경로-->C:\DEVTOOL\qt5build\nasm-2.10.07


    2.3 OpenSSL 빌드하기 

         2.3.1 MSVC 2012 용 x86 네이티브 도구 명령 프롬프트 실행


         2.3.2 NASM 경로 PATH 추가

                   SET PATH=%PATH%;C:\DEVTOOL\qt5build\nasm-2.10.07


         2.3.3 configure 실행   (C:\=C:\DEVTOOL\libs\openssl 경로에 설치시)

                  > CD C:\DEVTOOL\qt5build\openssl-1.0.1e_src

                  > perl Configure VC-WIN32 --prefix=C:\DEVTOOL\libs\openssl -MT

                  > ms\do_nasm

         2.3.4 빌드 및 설치

                  > nmake -f ms\nt.mak

> nmake -f ms\nt.mak test

                  > nmake -f ms\nt.mak install 


        2.3.5 설치결과확인
                  C:\DEVTOOL\libs\openssl



2. ICU static Build


빌드 방법은 2가지 인데.. Cygwin 환경에서 빌드하는경우 MSVC 2008 이하에 대해서


   ICU 는 기본적으로 바이너리는 동적 빌드 버전만 제공하고 있어서 static 빌드를 하려면 소스를 내려 받아 새로 빌드 해야함.

http://www.npcglib.org/~stathis/blog/2012/06/17/windows-task-build-the-icu-library-for-32-bit-and-64-bit/


위 링크에 가면 .bat 파일로 빌드하기 편하게 만들어놓은 배치파일이 있음. 이를 활용하면 되는데. Cygwin은 별도로 받아서 설치가 필요하다. (해당 페이지에있는 Portable Cygwin은 구버전이라 설치 되지 않았다.)


MSVC2010 이상이면  MSVC에서 

 <ICU>\source\allinone\allinone.sln   (솔루션)파일을 열어 원하는 형식으로 빌드해주면 간단히 끝난다.





3. QT 5.0.2 SDK 소스 다운로드및  MSVC2012 준비 하기  

   소스 리파지토리에서 Git  clone으로 받을 수 도 있겠지만. 확인해보지 못했고,

   윈도우용 QT SDK를 빌드하려면  아래 경로에서 받은 소스파일 묶음을 받아 진행했다.

   http://download.qt-project.org/official_releases/qt/5.0/5.0.2/single/qt-everywhere-opensource-src-5.0.2.zip

( 참고로 다른  *.tar.gz 파일을 받을 경우 configure.exe 가 없는 등 해당 압축은 윈도우환경에서  빌드 문제가 있음)

여기에서는 [C:\qt5build\qt-everywhere-opensource-src-5.0.2] 경로로 압축 해제된것으로 한다.


 - 3.1 MSVC 2012 준비 

    MSVC는  C:\MSDEV\MSVC2012P 와 같은 띄어쓰기 없는 경로에 설치할 것을 권장한다.  그래야 나중에 다른 관련 빌드를 하는데 문제가 발생하지 않는다. (그렇지 않으면 좀 고생할 수 도 있음)


 - 3.2 MS Direct X SDK (2010 June 버전) 빌드 준비 (Optional)

    Direct X 는 빌드 옵션에 따라 필요 할 수 도 있다.

    설치시에는  MSVC와 마찬가지로  C:\MSDEV\DIRECTX_SDK  와 같은 띄어쓰기 없는 경로에 설치하기 바람.



4. 빌드하기 


  4.1  MSVC  CMD 프롬프트 실행


MSVC를 이용한 빌드를 하려면 관련 환경변수값 (PATH등)이 필요한데. MSVC가 설치된 프로그램목록에서 [VS2012용 개발자 명령 프롬프트]를 실행시켜 주면된다.


 4.2 관련 CMD 프롬프트 에서 관련 PATH 추가 

 

SET PATH=%PATH%;C:\qt5build\jom;C:\qt5build\libs\openssl\bin


SET LIB=%LIB%;C:\qt5build\libs\openssl\lib;C:\qt5build\libs\icu-51-1\libs\lib

SET INCLUDE=%INCLUDE%;C:\qt5build\libs\openssl\include;C:\qt5build\libs\icu-51-1\libs\include


4.3 configure.bat 실행


configure.bat -prefix c:\qt502_static -static -debug-and-release -platform win32-msvc2012 -developer-build -opensource -confirm-license -nomake tests -make-tool jom -openssl -nomake examples -nomake tools -nomake tests  -opengl desktop


4.4 컴파일과 링크   (멀티코어사용)


jom -j 8



v8 빌드 방식이 바뀌어서 이전에 Scons 을 쓰는 것은 deprecated 되었다.

 

GYP 빌드 메타 정보를 생성하는 방법을 사용하는데 윈도우 & MSVC 2010 환경에서 빌드 하는 방법을 정리한다.

 

 

아래 순서로 빌드하면됨

 

1. 소스 다운로드

svn checkout http://v8.googlecode.com/svn/trunk/ v8

2. gyp 다운로드 (v8 빌드를 위한 메타 정보라고 함)

svn co http://gyp.googlecode.com/svn/trunk build/gyp

3. chromium python 다운로드 후 설치

svn co http://src.chromium.org/svn/trunk/tools/third_party/python_26@89111 third_party/python_26

4. chromium 제공  cygwin 설치

svn co  http://src.chromium.org/svn/trunk/deps/third_party/cygwin@66844 third_party/cygwin

5. visual studio 용 sln 파일 만들기

third_party\python_26\python.exe build\gyp_v8 -G msvs_version=2010

Updating projects from gyp files...

만들어진 all.sln 파일을 열고 msvc 에서 빌드 하는데... 아마도  code page 에러 (C4819 warning)가 발생할 것이다.

warning 중간에 나오는 error들도  warning 다량발생을 인한 2차적인 에러이므로 c4819만 잡으면 된다.

===================== 발생 에러 =======================

v8\src\utils.h : error C2220: warning treated as error - no 'object' file generated

v8\src\utils.h : warning C4819: The file contains a character that cannot be represented in the current code page (949). Save the file in Unicode format to prevent data loss

===============================================================

조치 하는 방법은  해당 솔루션에 포함된 프로젝트들(아래그림 참고) 중  소스를 포함하는 프로젝트들을 선택하여 C4819 Warning 이 안 뜨도록 억제해주면 된다.

파란색으로 선택된 프로젝트들만 선택하고 12개 프로젝트 선택하고 속성 창을 띄운다.

선택한뒤  Properties (속성) 창을 띄운다.

그리고 Disable Specific Warnings 에 4819를 추가해줍니다. (아래그림참고)

그리고 나서 빌드 하면 잘됨..




Pre-requisites for all platforms are:

    Subversion 1.4 or higher - see http://sourceforge.net/projects/win32svn/
    Python 2.4 or higher - see http://www.python.org
    SCons 1.0.0 or higher - see http://www.scons.org


Phase 1.  Download V8 source  by SVN

>svn svn checkout http://v8.googlecode.com/svn/trunk/ v8-read-only

>cd v8-read-only

Phase 2. Prepare environment values for MSVC++ 2010

>"C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"

Phase 3. build V8  for shared library.

#for release mode library
>scons mode=release library=shared msvcrt=shared env="PATH:%PATH%,LIB:%LIB%,INCLUDE:%INCLUDE%" d8



#for debug mode library
>scons mode=debug library=shared msvcrt=shared env="PATH:%PATH%,LIB:%LIB%,INCLUDE:%INCLUDE%" d8



( When I was choose static mode. V8.lib was too large size more than 200MB and too slow to use in my application build and there were several problems. but shared mode was good! so I suggest shared(dll) mode )

Good luck!

I referred following links.
http://code.google.com/intl/ko-KR/apis/v8/build.html
http://code.google.com/p/v8/wiki/BuildingOnWindows



+ Recent posts