WebKit เป็นเคอร์เนลเบราว์เซอร์โอเพ่นซอร์สที่ยอดเยี่ยมที่ได้รับการยอมรับทั่วโลก มีข้อดีคือความเร็วในการเรนเดอร์ที่รวดเร็ว ความยืดหยุ่นและการปรับแต่ง และการรองรับหลายแพลตฟอร์ม Maxthon และ UCWeb ในประเทศที่มีชื่อเสียงได้เลือก WebKit เป็นแกนหลักของเบราว์เซอร์ Google และ Apple ได้สร้างเบราว์เซอร์ Chrome และเบราว์เซอร์ Safari ตามลำดับโดยใช้ WebKit
แม้ว่า WebKit จะได้รับการยอมรับจากโปรแกรมเมอร์มากขึ้น แต่กระบวนการคอมไพล์ของมันก็เจ็บปวดมาก ด้านล่างนี้ฉันจะแบ่งปันประสบการณ์ของฉันในการคอมไพล์โค้ด WebKit กับคุณ
1) รับซอร์สโค้ด WebKit
ซอร์สโค้ด WebKit ได้รับการจัดการโดยใช้เครื่องมือ Subversion ดังนั้น ใครก็ตามที่มีไคลเอนต์ Subversion สามารถรับซอร์สโค้ดได้จาก http://svn.webkit.org/repository/webkit/trunk อย่างไรก็ตาม นี่ไม่ใช่วิธีที่ดีที่สุด รหัสที่ได้รับผ่าน svn ระหว่างกระบวนการคอมไพล์จริงอาจทำให้คุณประสบปัญหามากมาย ดังนั้น ฉันขอแนะนำให้ดาวน์โหลด tarball ซอร์สโค้ด WebKit โดยตรงจากบิลด์ Nightly ของ WebKit ที่อยู่เฉพาะคือ: http://nightly.webkit.org/builds/trunk/src/1 เป็นเรื่องน่าทึ่งที่โปรเจ็กต์ขนาดใหญ่อย่าง WebKit ยังคงปฏิบัติตามหลักการของ Daily Build
ในขณะที่เขียนบทความนี้ เวอร์ชันของซอร์สโค้ด WebKit คือ r52221 แต่ฉันไม่สามารถคอมไพล์ WebKit เวอร์ชันนี้ได้สำเร็จในช่วงสองวันที่ผ่านมา เหตุผลก็คือ หลังจากเปิดโครงการโดยใช้ Visual Studio 2005 เพียงไม่กี่นาที Visual Studio 2005 ก็หยุดตอบสนอง ฉันได้ทดสอบเวอร์ชัน r50006 ซึ่งเป็นเวอร์ชันแรกที่เริ่มต้นด้วย 5 แล้ว และไม่มีปัญหาดังกล่าว ยิ่งหมายเลขเวอร์ชันมากขึ้น ซอร์สโค้ดก็จะยิ่งใหม่ และในทางกลับกัน
2) การสร้างสภาพแวดล้อมการคอมไพล์ WebKit
มีบทความบนเว็บไซต์ WebKit ที่อธิบายการสร้างสภาพแวดล้อมของ WebKit ภายใต้แพลตฟอร์ม Windows: 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 คุณจะต้องติดตั้งการอัปเดต SP1 สำหรับ vista Visual C++ 2005 Express สามารถคอมไพล์ WebKit ได้เช่นกัน แต่ต้องติดตั้ง Platform SDK แยกต่างหาก การปฏิบัติได้พิสูจน์แล้วว่า WebKit สามารถคอมไพล์และส่งผ่านแพลตฟอร์ม 5.0 6.0 ได้
สิ่งนี้ทำให้เกิดคำถามเช่นกัน จะเกิดอะไรขึ้นถ้าติดตั้ง Visual Studio 2008 บนเครื่องของคุณแล้ว? ไม่ต้องกังวล Visual Studio 2005 และ Visual Studio 2008 สามารถอยู่ร่วมกันได้ และ Visual Studio 2005 สามารถติดตั้งได้หลังจาก Viusal Studio 2008 อย่างไรก็ตาม ควรสังเกตว่าเมื่อมีการติดตั้ง Visual Studio 2005 หลังจาก Visual Studio 2008 สคริปต์ Perl ของ WebKit จะไปที่ "System DiskProgram FilesMicrosoft Visual Studio" เท่านั้น เพื่อค้นหาโฟลเดอร์ VC bin (นั่นคือ cl .exe โฟลเดอร์) หาก VS 2005 ที่คุณติดตั้งไม่ได้อยู่ในดิสก์ระบบ คุณจะต้องคัดลอกโฟลเดอร์ VC bin ไปยังไดเร็กทอรีบนดิสก์ระบบ
หลังจากติดตั้ง Visual Studio 2005 แล้ว คุณต้องติดตั้ง Cygwin ชิ้นใหญ่อีกชิ้นหนึ่ง Cygwin จำลองสภาพแวดล้อม Unix บน Windows จริง ๆ วิธีที่ดีที่สุดคืออย่าใช้ไฟล์ setup.exe ที่ให้ไว้บนเว็บไซต์ Cygwin โดยตรงเมื่อติดตั้ง Cygwin ให้ใช้เครื่องมือ cygwin-downloader ที่ให้ไว้ในเว็บไซต์ WebKit.org แทน cygwin-downloader จะดาวน์โหลดเครื่องมือ 101 รายการที่จำเป็นสำหรับการคอมไพล์ WebKit (อาจมีเพิ่มอีกเล็กน้อยในตอนนี้) เช่น perl, zlib, bash เป็นต้น หลังจากการดาวน์โหลดเสร็จสิ้น ให้เรียกใช้เครื่องมือติดตั้งของ Cygwin Setup.exe แล้วเลือกติดตั้งจากไดเร็กทอรีในเครื่อง โปรดใส่ใจ! จำเป็นต้องติดตั้ง Cygwin ใต้พาร์ติชันดิสก์ระบบ หากไดรฟ์ C เป็นดิสก์ระบบ จะต้องติดตั้ง Cygwin ภายใต้ C:cygwin หลังจากการติดตั้งเสร็จสิ้น จะกินพื้นที่ประมาณหลายร้อยเมกะไบต์
ถัดไป สิ่งที่ยังต้องติดตั้งคือ QuickTime SDK บางคนบอกว่าคุณไม่จำเป็นต้องติดตั้ง QuickTime SDK แต่ฉันพบว่าถ้าคุณไม่ติดตั้ง โปรเจ็กต์ QTMovie ในโซลูชัน WebKit จะไม่ได้รับการคอมไพล์สำเร็จ ต้องติดตั้ง QuickTime ภายใต้:Program FilesQucikTime SDK บนดิสก์ระบบ อย่าเปลี่ยนเส้นทางการติดตั้ง
สุดท้ายนี้ หลังจากขยายขนาดไฟล์ซอร์สโค้ด WebKit แล้ว คุณต้องไปที่ไซต์ webKit.org เพื่อดาวน์โหลดไฟล์ WebKitSupportLibrary.zip ไฟล์นี้เป็นเวอร์ชันที่คอมไพล์ไว้ล่วงหน้าของไลบรารีของบุคคลที่สามบนแพลตฟอร์ม Windows สำหรับใช้เมื่อลิงก์กับ WebKit หลังจากดาวน์โหลดแล้ว ไม่จำเป็นต้องแตกไฟล์ zip และสามารถวางไว้ในไดเร็กทอรีรากของ WebKit ได้โดยตรง
ขั้นตอนการรวบรวม
1) ตั้งค่าตัวแปรสภาพแวดล้อม ตั้งค่า WEBKITLIBRARIESDIR เป็นพาธไดเร็กทอรีซอร์สโค้ด WebKitLibraries ตั้งค่า WEBKITOUTPUTDIR เป็นโฟลเดอร์เอาต์พุตที่คุณวางแผนจะจัดเก็บ obj และ dll แน่นอนว่าพาร์ติชันที่โฟลเดอร์นี้ตั้งอยู่จะต้องมีพื้นที่เหลืออย่างน้อย 4G
2) ดำเนินการสคริปต์อัพเดต โปรดเรียกใช้หน้าต่างบรรทัดคำสั่ง cygwin บนเดสก์ท็อป จากนั้นใช้คำสั่ง CD (เหมือนกับคำสั่ง DOS CD) เพื่อข้ามไปยังโฟลเดอร์ไดเร็กทอรีซอร์สโค้ด WebKitWebKitToolsScripts ตัวอย่างเช่น ซอร์สโค้ด WebKit ของฉันวางอยู่ในไดรฟ์ F ซึ่งก็คือ cd F:/WebKit/WebKitTools/Scripts/ และเรียกใช้สคริปต์สองตัว Update-WebKit และ Update-WebKit-Support-libs ในไดเร็กทอรีนี้ ขั้นตอนนี้ไม่ได้กล่าวถึงในหลายบล็อก จริงๆ แล้ว ขั้นตอนนี้เป็นกุญแจสำคัญในการคอมไพล์ให้ประสบความสำเร็จ
3) หลังจากดำเนินการสองขั้นตอนข้างต้นสำเร็จแล้ว คุณสามารถใช้ Visual Studio 2005 เพื่อเปิดโซลูชัน WebKit.sln ที่อยู่ในไดเร็กทอรีซอร์สโค้ด WebKit WebKitwinWebKit.vcproj sln นี้มาพร้อมกับการกำหนดค่าการคอมไพล์หกรายการ Debug, Debug_all, Debug_Cairo, Release, Debug_Internal และ Release_Cairo ตามค่าเริ่มต้น เวอร์ชันที่คอมไพล์ด้วย Release ใช้เครื่องมือเรนเดอร์ของ Apple เอง ซึ่งสอดคล้องกับของ Safari เวอร์ชันที่คอมไพล์ด้วย Release_Cairo รองรับเอ็นจิ้นการเรนเดอร์ไคโร เวอร์ชันนี้สามารถรันได้โดยอิสระจากสภาพแวดล้อมของ Apple แต่ไม่สามารถรันในสภาพแวดล้อม Safari ของ Apple ได้ หากต้องการตรวจสอบว่าการคอมไพล์สำเร็จหรือไม่ คุณสามารถใช้แอปพลิเคชัน WinLauncher.exe เพื่อโหลด WebKit สำหรับการทดสอบ
ฉันจะเขียนมันไว้ที่นี่ตอนนี้และฉันจะเพิ่มอีกในภายหลังหากฉันคิดอะไรไม่ออก