Windows 7, Visual Studio 2015下编译Webkit
因工作需要,需要编译Windows版本的Webkit,中间走了不少弯路,都记录下来,供大家参考!也随时欢迎大家讨论(QQ群:345802342)
整个编译工作参考的是官方文档:https://webkit.org/webkit-on-windows/
1. 主要的时间是下载代码,不需要VPN,我晚上下载的,第二天就好了;这个步骤应该不会有什么问题;
2. 文档上要求的工具我除了下面四个没装,其他的都装了:

3. WebKitAuxiliaryLibrary.zip和WebKitSupportLibrary.zip需要提前下载好,并放到源码根目录:

4. 之后运行perl update-webkit,会同步一些编译所依赖的文件,并添加环境变量:

5. 接下来是最重要,也是问题最多的环节:编译!
a. 错误1:The C compiler "D:/xxxx/VC/bin/cl.exe" is not able to compile a simple test program;

解决方法:可能是因为本机装了多个不同版本的VS的问题;
b. 错误2:no cmake_c_compiler could be found
解决方法:CMake没有设置默认的编译器,需要在CMake中设置;参见步骤6;
c. 错误3:cl.exe 应用程序无法正常启动(0xc000007b)
解决方法:这个是CMake编译的时候,有些文件没找到会报错,直接确认即可;参见步骤6;
d. 错误4:Error in configuration process, project files may be invalid
错误提示:CMake Error at CMakeLists.txt:32 (message): Please choose which WebKit port to build (one of AppleWin;Efl;GTK;JSCOnly;Mac;WPE;WinCairo)
解决方法:设置PORT为AppleWin,再次点击Configure,即可配置成功;

e. 错误5:error MSB6006: "CL.exe" exited with code -1073741701.
解决方法:这个跟步骤4设置的宏(_IsNativeEnvironment=true)有关,因为系统默认以cmake编译Webkit,而不是用VS编译;需要设置为false,如下图:

6. 在步骤5的错误中折腾了半天,也尝试换电脑编译,还是碰到各种问题;所以尝试直接通过CMake配置编译,竟然可以编译成功!!!
a. 设置源码和输出目录,直接替换自己的Webkit目录即可,如下图:

b. 配置VS版本,因为我有多个VS的版本,所以需要配置使用指定的版本,点击Configure,选择你需要的版本即可,我的是VS2015(最新Webkit必须VS2015以上):

c. 点击Configure进行配置,如果有红色标识,需要继续点击Configure,直至没有红色提示,如下图所示:
--> 
7. 点击Generate,就可以在WebKitBuild目录下生产WebKit.sln文件,如下图:

8. 使用VS2015打开WebKit.sln文件,一次性编译通过,接下来就好好琢磨代码啦~

PS:如果大家还遇到其他什么问题,欢迎加群讨论(QQ群:345802342)!
Windows 7, Visual Studio 2015下编译Webkit的更多相关文章
- Visual Studio 2015下编译zmq项目下其他项目踩进的项目引用坑
PS.在之前的一篇文章中介绍了如何用Visual Studio 2015编译zmq,在编译同解决方案中除了libzmq之外的项目例如inproc_thr时会报错误,具如下: Severity Code ...
- Visual Studio 2015 下 编译 libpng
libpng https://github.com/glennrp/libpng zlib https://github.com/madler/zlib/releases https://github ...
- .NET Core 在Visual Studio 2015 下的使用-MSDN
.NET Core RC2 现已推出,这是真正的"候选发布"而非 RC1 Beta 冒充的候选发布(如果是那样,请考虑发布后出现的所有更改).当前,围绕 .NET Core 的开发 ...
- 用Visual Studio 2015成功编译、发布UMDF驱动到目标机!!
开发工具:Visual Studio 2015企业版 主 机:windows10 X64企业版,主机是安装了Visual Studio 2015的操作系统,主要进行驱动开发和调试. 目 标 ...
- visual studio 2015下python编程的中文字符串问题
visual studio 2015强大的编程功能,编写起python来也是非常方便的,但其对中文字符的支持不是很好,经常发生莫名其妙的错误,最常见的错误是不报错,也不执行代码. 代码简单如下: x= ...
- visual studio 2015下使用gcc调试linux c++开发环境搭建完整详解
一直以来,相信绝大部分的开发都是windows/mac下做开发,尤其是非嵌入式和qt系的,而开源服务器程序绝大部分都是跑在Linux下,几乎就没有跑在windows下的.一直以来开发人员都是在wind ...
- ASP.NET 5系列教程 (五):在Visual Studio 2015中使用Grunt、Bower开发Web程序
基于Visual Studio 2015,你可以: 方便的管理前端包,如jQuery, Bootstrap, 或Angular. 自动运行任务,如LESS.JavaScript压缩.JSLint.Ja ...
- win10下Visual Studio 2015,C++ x64编译zlib
前提安装了visual studio 2015 PS.几乎所有方式,x64的编译都会有点坑,鉴于网上的x86编译方式非常的多,所以不再累赘x86的编译方式 zlib下载源: 官网:http: ...
- 用Visual Studio 2015 编译张帆的第一个NT式驱动,并且成功安装到Windows XP里面!!!
开发工具:Visual Studio 2015 企业版 目 标 机:Windows XP X86 前提:我们已经成功安装了Visual Studio 2015以及WDK,而且更重要一点是一定要SDK版 ...
随机推荐
- 《Java多线程编程核心技术》读后感(三)
synchronized同步语句块 用synchronized声明方法在某些情况下是有弊端的,比如A线程调用同步方法执行以一个长时间的任务,那么B线程则必须等待比较较长的时间.在这样的情况下可以使用s ...
- lvs squid相关
http://zh.linuxvirtualserver.org/ 这几天在要对用户请求过来的post 的body内容进行处理,就具体了解了一下squid 处理post请求的具体流程,在这里具体分享一 ...
- 洛谷P1439 排列LCS问题
P1439 排列LCS问题 题目描述 给出1-n的两个排列P1和P2,求它们的最长公共子序列. 输入输出格式 输入格式: 第一行是一个数n, 接下来两行,每行为n个数,为自然数1-n的一个排列. 输出 ...
- Codevs 1159 最大全0子矩阵
1159 最大全0子矩阵 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 在一个0,1方阵中找出其中最大的全 ...
- ajax连接服务器框架
ajax.js function ajax(url, fnSucc, fnFaild) { //1.创建Ajax对象 if(window.XMLHttpRequest) { var oAjax=new ...
- Maven项目编译版本的问题和Spring中没有导入核心包
idea中maven项目的编译: 方案1:maven的settings.xml中指定全局默认编译版本 <profile> <id>jdk-1.8</id> < ...
- iOS 隐藏百度地图SDK的百度LOGO
第一个思路:找到LOGO对应的UIIMageView,并将其隐藏hidden // 隐藏百度地图Logo UIView *mView = _mapView.subviews.firstObject; ...
- [Java]String、 StringBuffer、StringBuilder的区别
一.异同点: 1) 都是 final 类, 都不允许被继承; 2) String 长度是不可变的, StringBuffer.StringBuilder 长度是可变的; 3) StringBuffer ...
- [TCP/IP]ARP与RARP的总结
一. 总述 简单的说,ARP协议就是将IP地址转换为MAC物理地址:而RARP,就是ARP的逆向,也就是将MAC物理地址转换为IP地址.看起来这两个协议是完全对称的,但发明这两个协议的初衷基本上没有什 ...
- 如果查询的结果少,可以把查询结果当子集,再查另一张表,比join的速度快得多得多
) as qty from riv_print_history_l phl JOIN tab_user_profile up on up.UP_USER_ID = phl.PHL_PRINT_USER ...