WebKit은 세계적으로 인정받는 뛰어난 오픈 소스 브라우저 커널입니다. 빠른 렌더링 속도, 유연성 및 사용자 정의, 다중 플랫폼 지원이라는 장점이 있습니다. 국내에서 잘 알려진 Maxthon과 UCWeb은 WebKit을 브라우저 코어로 선택했습니다. Google과 Apple은 각각 WebKit을 기반으로 Chrome 브라우저와 Safari 브라우저만 구축했습니다.
WebKit은 점점 더 많은 프로그래머들에게 받아들여지고 있지만 컴파일 과정은 매우 고통스럽습니다. 아래에서는 WebKit 코드 컴파일 경험을 여러분과 공유하겠습니다.
1) WebKit 소스 코드 받기
WebKit 소스 코드는 Subversion 도구를 사용하여 관리됩니다. 따라서 Subversion 클라이언트를 사용하는 사람은 누구나 http://svn.webkit.org/repository/webkit/trunk 에서 소스 코드를 얻을 수 있습니다. 그러나 이것이 최선의 방법은 아닙니다. 실제 컴파일 과정에서 svn을 통해 얻은 코드는 많은 문제를 야기할 수 있습니다. 따라서 WebKit의 Nightly 빌드에서 직접 WebKit 소스 코드 tarball을 다운로드하는 것이 좋습니다. 구체적인 주소는 다음과 같습니다: http://nightly.webkit.org/builds/trunk/src/1 WebKit만큼 큰 프로젝트가 여전히 Daily Build의 원칙을 따르고 있다는 것은 놀라운 일입니다.
이 글을 쓰는 시점에서 WebKit 소스 코드 버전은 r52221이지만 지난 이틀 동안 이 버전의 WebKit을 성공적으로 컴파일하지 못했습니다. 그 이유는 Visual Studio 2005를 사용하여 프로젝트를 열고 몇 분 후에 Visual Studio 2005가 응답을 멈추기 때문입니다. 5로 시작하는 첫 번째 버전인 r50006 버전을 테스트해 보았는데 그런 문제는 없습니다. 버전 번호가 클수록 소스 코드가 최신이며 그 반대의 경우도 마찬가지입니다.
2) WebKit 컴파일 환경 구축
WebKit 웹사이트에는 Windows 플랫폼에서 WebKit의 환경 구성을 설명하는 기사가 있습니다. http://webkit.org/building/tools.html 그러나 이 기사는 너무 간단합니다. 이것이 바로 WebKit이 사람들을 가장 파괴하는 곳입니다. 수십 번의 실패 끝에 마침내 목표에 이르는 지름길을 찾았습니다.
하드웨어
메모리가 2G 이상인 컴퓨터를 찾는 것이 가장 좋습니다. WebKit 프로젝트가 너무 크기 때문에 수백 개의 .obj 파일이 생성됩니다. 링크 작업을 수행할 때 약 1.6G의 메모리가 필요합니다. 컴퓨터에 Vista와 같이 메모리가 부족한 운영 체제가 설치된 경우 link.exe에서 "메모리 부족" 메시지가 나타날 때까지 기다리십시오. 내가 Vista를 설치한 컴퓨터의 메모리는 2G에 불과했고 여러 번 연결을 시도했지만 성공하지 못했습니다. 결국 안전 모드에서 강제로 컴파일해야 했습니다(감히 네트워크 카드 드라이버를 로드할 수도 없었습니다). 최대 메모리가 1.99G에 도달했을 때 마침내 테스트를 통과했습니다. 정말 흥미롭습니다.
물론 하드디스크는 클수록 좋습니다. 왜냐하면 WebKit 소스코드는 확장 후 160M~190M의 디스크 공간을 차지하고, 컴파일 과정에서 생성되는 중간 파일들은 약 4G의 저장공간을 필요로 하기 때문입니다. Cygwin Visual Studio 등이 차지하는 디스크 공간 외에도 상당히 큽니다. 가장 중요한 것은 시스템 디스크에 약 4G의 공간을 확보하는 것입니다.
실제로 멀티 코어 CPU를 사용하면 WebKit을 컴파일하는 데에도 도움이 됩니다. 컴파일 스크립트는 cl.exe를 호출하여 WebKit을 동시에 병렬로 컴파일할 수 있으므로 컴파일 시간이 크게 단축됩니다.
소프트웨어
먼저 Visual Studio 2005 SP1을 설치해야 합니다. Vista 또는 Window 7인 경우 Vista용 SP1 업데이트를 설치해야 합니다. Visual C++ 2005 Express는 WebKit도 컴파일할 수 있지만 Platform SDK를 별도로 설치해야 합니다. 실습을 통해 WebKit이 Platform 5.0 6.0에서 컴파일되고 전달될 수 있음이 입증되었습니다.
이는 또한 Visual Studio 2008이 이미 컴퓨터에 설치되어 있다면 어떻게 될까요?라는 질문을 제기합니다. 걱정하지 마십시오. Visual Studio 2005와 Visual Studio 2008은 공존할 수 있으며 Visual Studio 2005는 Viusal Studio 2008 이후에 설치할 수 있습니다. 그러나 Visual Studio 2008 이후에 Visual Studio 2005를 설치하면 WebKit의 Perl 스크립트는 VC bin 폴더(즉, cl .exe)를 찾기 위해 "System DiskProgram FilesMicrosoft Visual Studio"로만 이동합니다. 접는 사람). 설치한 VS 2005가 시스템 디스크에 없으면 VC bin 폴더를 시스템 디스크의 디렉터리에 복사해야 합니다.
Visual Studio 2005를 설치한 후에는 Cygwin의 또 다른 주요 부분을 설치해야 합니다. Cygwin은 실제로 Windows에서 Unix 환경을 시뮬레이션합니다. Cygwin 설치 시 Cygwin 홈페이지에서 제공하는 setup.exe 파일을 직접 사용하지 않는 것이 가장 좋습니다. 대신 WebKit.org 웹사이트에 제공되는 cygwin-downloader 도구를 사용하세요. cygwin-downloader는 Perl, zlib, bash 등과 같이 WebKit을 컴파일하는 데 필요한 101개 도구(현재 몇 개가 더 있을 수 있음)를 다운로드합니다. 다운로드가 완료된 후 Cygwin의 설치 도구 Setup.exe를 실행하고 로컬 디렉터리에서 설치하도록 선택합니다. 주의해주세요! Cygwin은 시스템 디스크 파티션 아래에 설치되어야 합니다. C 드라이브가 시스템 디스크인 경우 Cygwin은 C:cygwin 아래에 설치되어야 합니다. 설치가 완료되면 약 수백 메가바이트의 공간을 차지하게 됩니다.
다음으로 아직 설치해야 할 것은 QuickTime SDK입니다. 어떤 사람들은 QuickTime SDK를 설치할 필요가 없다고 하는데, 설치하지 않으면 WebKit 솔루션의 QTMovie 프로젝트가 성공적으로 컴파일되지 않는다는 것을 발견했습니다. QuickTime은 시스템 디스크의 Program FilesQucikTime SDK에 설치되어야 합니다. 설치 경로를 변경하지 마십시오.
마지막으로 WebKit 소스 코드 파일의 압축을 푼 후 webKit.org 사이트로 이동하여 WebKitSupportLibrary.zip 파일을 다운로드해야 합니다. 이 파일은 Windows 플랫폼에서 일부 타사 라이브러리의 사전 컴파일된 버전입니다. WebKit에 연결할 때 사용됩니다. 다운로드 후에는 zip 파일의 압축을 풀 필요가 없으며 WebKit의 루트 디렉터리에 직접 배치할 수 있습니다.
컴파일 단계
1) 환경변수를 설정합니다. WEBKITLIBRARIESDIR을 WebKit 소스 코드 디렉터리WebKitLibrarieswin 경로로 설정하고 WEBKITOUTPUTDIR을 obj 및 dll을 저장할 출력 폴더로 설정합니다. 물론 이 폴더가 있는 파티션에는 최소 4G의 남은 공간이 있어야 합니다.
2) 업데이트 스크립트를 실행합니다. 데스크탑에서 cygwin 명령줄 창을 실행한 후 CD 명령(DOS CD 명령과 동일)을 사용하여 WebKit 소스 코드 디렉터리WebKitToolsScripts 폴더로 이동하세요. 예를 들어 내 WebKit 소스 코드는 F 드라이브(cd F:/WebKit/WebKitTools/Scripts/)에 있고 이 디렉터리에서 Update-WebKit 및 Update-WebKit-Support-libs 두 스크립트를 실행합니다. 이 단계는 많은 블로그에서 언급되지 않습니다. 실제로 이 단계는 성공적인 컴파일의 핵심입니다.
3) 위의 두 단계를 성공적으로 실행한 후 Visual Studio 2005를 사용하여 WebKit 소스 코드 디렉터리 WebKitwinWebKit.vcproj 디렉터리에 있는 WebKit.sln 솔루션을 열 수 있습니다. 이 sln에는 기본적으로 Debug, Debug_all, Debug_Cairo, Release, Debug_Internal 및 Release_Cairo의 6가지 컴파일 구성이 함께 제공됩니다. Release로 컴파일된 버전은 Safari와 일치하는 Apple 자체 렌더링 엔진을 사용합니다. Release_Cairo로 컴파일된 버전은 Cairo 렌더링 엔진을 지원합니다. 이 버전은 Apple 환경과 독립적으로 실행할 수 있지만 Apple의 Safari 환경에서는 실행할 수 없습니다. 컴파일 성공 여부를 모니터링하려면 WinLauncher.exe 애플리케이션을 사용하여 테스트용 WebKit을 로드할 수 있습니다.
일단 여기에 적고, 나중에 생각나는 것이 있으면 추가하겠습니다.