zoukankan      html  css  js  c++  java
  • Windows平台编译Webkit

    最近几天因为项目需要编译了一次Webkit,因为其中颇费周折,所以把自己的编译过程的总结分享一下,希望能给大家帮助。

    参考网站http://www.webkit.org/

    1. 编译环境的搭建

    (1)Visual Studio

    由于官方指导上面说:暂不支持VS2005以后的版本(newer versions of Visual Studio are currently unsupported)

    所以为了避免出现不可预料的错误,果断放弃了VS2010,新建了一个Win7虚拟机,装上了VS2005 Team Suite CHS

    接下来安装VS2005的各种补丁

    Microsoft Visual Studio 2005 Team Suite Service Pack 1

    Service Pack 1 Update for Windows Vista (这个是解决VS2005在Vista以后的系统兼容性等的问题)

    Visual Studio 2005 Service Pack 1 ATL Security Update

    KB943969(这两个KB好像都是提升编译的性能和稳定性,必须装)

    KB947315

    由于安装的是中文版,所以对应的补丁也要装中文版。官方指导里还有两个补丁由于没有中文版,所以没装。看补丁说明貌似是提升编译时的性能,不知道是中文版里已经附带了,还是就是没有中文版。不过我没装也没出什么错误,就是感觉编译有点慢,不知道是不是这个问题。(可能是我想太多了)

    (2)Cygwin

    这个就比较简单了,虽然需要装100+个组件,但是因为官方提供了自动的下载工具,所以。。。

    cygwin-downloader.zip

    运行后自动下载组件,然后自动启动安装。

    选择从本地文件安装(之前自动下载的Release文件夹),喝杯茶就装好了。

    (3)QuickTime SDK

    这个也很简单,就是需要Apple ID,由于本来就是果粉,所以直接登录下载。。。

    http://developer.apple.com/quicktime/download/

    (4)Install DirectX SDK

    好像用VS2005的话只能安装February 2010 DirectX SDK

    官方提示:新版本DirectX SDK不支持VS2005 (newer versions do not support Visual Studio 2005)

    (5)其他

    Debugging Tools for Windows和Hotfix是选择性安装的,所以就无视了。。。

    2. 获取源代码

    最方便的是下载WebKit Nightly Builds,只有20M左右大小。

    还有一个http://nightly.webkit.org/files/WebKit-SVN-source.tar.bz2,这个包含了SVN上的所有版本和更新信息,接近2G,网速好的可以试试。

    代码下载下来以后,解压到一个地方,磁盘剩余空间最好大于4G。

    之后还要下载一个WebKit Support Libraries,这个不需要解压,直接放到源码的根目录下就行了。

    然后启动我们的Cygwin,进到源代码的根目录下的/Tools/Scripts/,运行脚本update-webkit

    具体命令大概是:

    cd /cygdrive/盘符

    cd /源码的根目录/Tools/Scripts/

    ./update-webkit

    之后会自动下载编译需要的依赖项。

    3.编译Webkit

    做了那么多准备工作,终于到了编译阶段,其实真正的挑战才刚刚开始。Now action!

    首先得设定几个环境变量:

    WEBKIT_DIR = Webkit源码的根目录

    WEBKITLIBRARIESDIR = %WEBKIT_DIR%/WebkitLibraries/win

    WEBKITOUTPUTDIR = 这个自定啦(生成结果的路径)

     

    接下来打开源码根目录下\Source\WebKit\win\WebKit.vcproj\Webkit.sln

    这样就启动了VS2005,左边一排的项目真是够吓人的。

    选择Debug或者Release版本编译。这里要注意:有些工程的属性->配置属性->C/C++->常规,把警告视为错误必须去掉,不然会出现编译错误。

    然后用中文版的VS的话WebCore\platform\LocalizationStrategy.cpp会有乱码,要修改下面这个函数

    String contextMenuItemTagLookUpInDictionary(const String& selectedString)
    
    {
    
    #if defined(BUILDING_ON_LEOPARD) || defined(BUILDING_ON_SNOW_LEOPARD)
    
        UNUSED_PARAM(selectedString);
    
        return WEB_UI_STRING("Look Up in Dictionary", "Look Up in Dictionary context menu item");
    
    #else
    
    #if USE(CF)
    
        RetainPtr<CFStringRef> selectedCFString(AdoptCF, truncatedStringForLookupMenuItem(selectedString).createCFString());
    
        return formatLocalizedString(WEB_UI_STRING("Look Up “%@”", "Look Upcontext menu item with selected word"), selectedCFString.get());
    
    #else
    
        return WEB_UI_STRING("Look Up “<selection>”", "Look Up contextmenu item with selected word").replace("<selection>",truncatedStringForLookupMenuItem(selectedString));
    
    #endif
    
    #endif
    
    }

    之后就慢慢等待编译吧

    个人认为最好手动选择编译的顺序,不然可能会有问题

    WTF->JavaScriptCore->WebCore->后面随意

     

    整个编译下来花了大约一个多小时,而且由于没有注意到前面的问题,失败了好几次,反反复复花了好几个小时才成功。

    之后就可以调试运行了,最好装一个Safari,不然可能会缺少一些dll

    运行Webkit.exe,VS里工具->附加到进程->选择Safari就可以调试了

     

    大家编译的时候一定要有耐心,如果怕出错就像我一样虚拟机里配置一个干净的编译环境。

    最后祝大家Webkit编译成功!

  • 相关阅读:
    C#中的int?和X??
    验证码识别技术导论
    Jquery focus blur给文本框加选中离开效果
    Asp.Net 用户验证(自定义IPrincipal和IIdentity)
    FCKeditor介绍
    char varchar 有什么区别
    jquery无刷新载入其他页面的内容
    ASP.NET 安全认证
    程序员不是一般人
    [转]Asp.net中基于Forms验证的角色验证授权
  • 原文地址:https://www.cnblogs.com/Jiajun/p/2537515.html
Copyright © 2011-2022 走看看