系统信息:Mac OS 10.9.4

环境:Xcode 5.1

请给予足够的耐心,等待源码下载、排除路径问题、编译等一系列漫长的时间。

下载源码:

以下下载地址均来自:webkit官方网站 www.webkit.org

  1. 你可以去http://nightly.webkit.org/下载source文件
    (此时名为WebKit r172372,约35.6M,随更新可能会有所变化)

  2. 你可以在浏览器中打开以网址即可开始下载源码压缩包
    (此时为1G左右,好像是多了一些debug的文件)

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

    然后在终端进入Downloads文件夹但后解压缩

    (此部亦可打开Finder找到文件后双击进行解压)

      tar jxvf WebKit-SVN-source.tar.bz2
  3. 你可以在终端输入以下命令,获取源码

    svncheckout https://svn.webkit.org/repository/webkit/trunk

    注:如果提示找不到svn命令,请自行安装svn

编译源码:

  1. 用Xcode打开webkit主目录下的工程文件

  2. Xcode的菜单File->WorkspaceSettings->Build->Derived Data Location一栏选择Workspace-relative,输入WebKitBuild ,然后选择Advanced…,在弹出框中选择Custom选项,后面选择Relative to Workspace 之后,在Products后输入WebKitBuild,在Intermediates后输入Build/WebKitBuild

  3. Xcode的菜单Product->Scheme->EditScheme… 在弹出框中,最上端可以选择Scheme,请选择All Source(target WebProcess) 在中间Executable选择WebProcess(这样编译后会出现一个Safari,在此也可以选择MiniBrowser.app,这也是Webkit提供的UI层,编译完后可再次到此处修改)

  4. 点击Run编译并运行

  5. 稍等之后,编译出错?很正常,莫慌莫慌。记住,无论出现什么错误,都不会是源码的问题,大多数情况下都会是路径配置问题。(由于版本的不同,缺少的文件可能不同,所以还是请大家编译找到错误之后,针对性拷贝文件,勿急勿躁,问题见附录)

  6. 点击Run编译并运行,这次就可以正常编译了(我是这样的,也可能会出现别的错误自行解决,大多数都会是这种路径的问题),编译过程非常漫长,请耐心等待,另外,编译完之后会变得非常庞大。

附录:

以下是本人碰到的问题,由于网上关于Xcode下编译webkit内核较少,有问题大多数出在头文件处,处理方式类似如下

  • llvm-c/Analysis.h file notFound

    在webkit的主目录下,有一个WebKitLibraries的文件夹下,其下有个LLVMincludesMavericks.tar.bz2,解压,进入解压后的目录,有llvm,llvm-c两个文件夹,将这两个文件夹都复制到 / WebKitBuild//usr/local/include目录下; 默认情况下,Configuration为Debug;

  • library not found for–lLLVMTablleGen

    其意思是找不到libLLVMTablleGen.a这个库,故顺着刚才的思路,打开下的WebKitLibraries文件夹,其下还有另外一个压缩包LLVMLibrariesMavericks.tar.bz2,解压,进入目录,发现有很多后缀为.a的文件,将所有文件直接复制到 / WebKitBuild//usr/local目录下; 默认情况下,Configuration为Debug;

  • WebKitSystemInterface.h filenot found

    编译,等了好久好久(编译了两个主要的Core,这两个非常慢),之后又出错了。直觉告诉我还去刚才的下的WebKitLibraries文件夹下找,果然,又看到了WebKitSystemInterface.h,果断又复制到 / WebKitBuild//usr/local/include目录下; 默认情况下,Configuration为Debug;
    复制完之后,我留了一个心眼,多看了这个目录几眼,我去,居然还有个libWebKitSystemInterfaceMavericks.a,直觉告诉我,这货一定还会出错,索性,将其直接复制到 / WebKitBuild//usr/local目录下; 默认情况下,Configuration为Debug;