Mac OS X編譯最新webkit(2013-03-15)

hursing發表於2013-03-18

安裝Xcode4.5版本或以上。必須要安裝的方式,不能copy。

xcode選單Xcode->Preferences...->Downloads->Components欄選擇Command Line Tools的Install。不做這步的話,可能會出現warning:“The specified SDK “Current OS X” does not appear to have all of the necessary headers installed. ”。該warning會導致提示各種標頭檔案找不到的錯誤,例如Platform.h中的<Availability.h>  。

命令列或者CornerStone

svn checkout http://svn.webkit.org/repository/webkit/trunk

或者直接download程式碼壓縮包

http://nightly.webkit.org/files/WebKit-SVN-source.tar.bz2

 

開啟WebKit.xcworkspace。先設定xcodeworkspace編譯中間目錄。

Xcode的選單File->Workspace Settings->Build->Derived Data Location一欄選擇Workspace-relative,並輸入WebKitBuild->Done

 

編譯。

編譯過程中可能會出現錯誤,這些錯誤都發生在指令碼的執行裡,一般不會在程式碼檔案中有錯誤。

我遇到的兩個指令碼內錯誤:

1.    分析讀取Keywords.table時,多了個空的末行。把空末行刪除即可

2.    通過gperf生成程式碼錯誤。錯誤的檔案是ColorData.gperf,從錯誤提示中完全看不出真實原因。原因可能是檔案許可權或編碼設定不對。先copy該檔案的內容,刪掉該檔案,再新建一個同名檔案,貼上原來的內容,儲存,這樣就ok了。

 

在xcode中開啟debug模式,點選run,即會啟動safari並attach上去。然後,隨你加斷點吧。 

 

由於mac safari實際會有多個程式來處理網頁,部分程式碼並非在safari程式中執行,而是在WebProcess程式中。所以,啟動safari後,可以再attach一個程式。

xcode選單Product->Attach to Process->選擇WebProcess。 此後,一些原本不會進去的斷點也會進了。例如 FrameView.cpp的paintContents函式。

也可以在xcode toolbar的target欄裡選擇All Source (target WebProcess) 直接啟動到WebProcess

 

還可以不用safari作為target,使用MiniBrowser。toolbar的target選單->Edit Scheme->Info->Executable->MiniBrowser.app->OK。設定後,點選run會執行MiniBrowser。

 

自己寫一個Mac OS X版的瀏覽器,應該能更好理解webkit

相關文章