当前位置:首页 > 芯闻号 > 充电吧
[导读]从12年那会儿开始获取源码和构建chromium项目都是按照那时候的官方要求用win7+vs2010,相对来说也比较简单,按照步骤来也很快能编译出来。1.官网的编译配置介绍:http://www.ch

从12年那会儿开始获取源码和构建chromium项目都是按照那时候的官方要求用win7+vs2010,相对来说也比较简单,按照步骤来也很快能编译出来。

1.官网的编译配置介绍:http://www.chromium.org/developers/how-tos/build-instructions-windows

2.编译需要的工具:vs2010/sp1,win8sdk,DXSDK,depot_tools

我用的工具都是在这里了:2010CompilerToolsForChrome

depot_tools也可以从官方获取:depot_tools (命令行下执行 gclient 它会自动下载安装构建项目解决方案所需要的工具  python, git 和 svn ),下载下来之后找个地方解压出来,比如我是解压到E:盘下。


3.修改配置 按照官网说的,配置环境变量:GYP_MSVS_VERSION和depot_tools的path路径。
如果win8SDK的安装路径不是默认的 C:Program Files (x86)Windows Kits8.0 的话,就需要增加一个环境变量。 GYP_DEFINES 值为你真正安装win8SDK的位置,比如C:UsersKuerjinjinDownloadsWindows Kits8.0
  配置DirectX sdk的头文件及lib库路径: windows键 + r键,输入%localappdata%MicrosoftMSBuildv4.0 并运行,在弹出的文件夹列表中找到Microsoft.Cpp.Win32.user.props和Microsoft.Cpp.x64.user.props并修改这两个文件。
[html] view plaincopyprint?       

$(DXSDK_DIR)Include;$(IncludePath)$(DXSDK_DIR)Libx86;$(LibraryPath)$(DXSDK_DIR)Include;$(IncludePath)$(DXSDK_DIR)Libx64;$(LibraryPath)


修改WRL的头文件,默认C:Program Files (x86)Windows Kits8.0Includewinrtasyncinfo.h 找到 enum class AsyncStatus { ... } 改成 enum /*class*/ AsyncStatus { ... }
4.代码获取:
找一个空间超过60G的磁盘比如E:,创建文件夹chromium30,命令行下切换到该目录, [plain] view plaincopyprint?>e:  >cd chromium30  >gclient config http://src.chromium.org/svn/releases/30.0.1559.0/   

>e:
>cd chromium30
>gclient config http://src.chromium.org/svn/releases/30.0.1559.0/


拉取目前最新的源码配置,当然你也可以在http://src.chromium.org/svn/releases/中选择自己想要的源码版本。 一般会在当前目录下生成一个.gclient的配置文件。为了减少不必要的代码获得的时间浪费,打开.gclient文件在“custom_deps”节里忽略掉部分测试代码,如: [plain] view plaincopyprint?solutions = [ { "name"        : "30.0.1559.0",                          "url"         : "http://src.chromium.org/svn/releases/30.0.1559.0",                          "deps_file"   : "DEPS",                          "managed"     : True,                          "custom_deps" : {                                     "src/webkit/data/layout_tests/LayoutTests": None,                                     "src/third_party/WebKit/LayoutTests": None,                                     "src/chrome/tools/test/reference_build/chrome": None,                                     "src/chrome_frame/tools/test/reference_build/chrome": None,                                     "src/chrome/tools/test/reference_build/chrome_linux": None,                                     "src/chrome/tools/test/reference_build/chrome_mac": None,                          },                         "safesync_url": "",                        },  ]  

solutions = [ { "name"        : "30.0.1559.0",
                        "url"         : "http://src.chromium.org/svn/releases/30.0.1559.0",
                        "deps_file"   : "DEPS",
                        "managed"     : True,
                        "custom_deps" : {
                                   "src/webkit/data/layout_tests/LayoutTests": None,
                                   "src/third_party/WebKit/LayoutTests": None,
                                   "src/chrome/tools/test/reference_build/chrome": None,
                                   "src/chrome_frame/tools/test/reference_build/chrome": None,
                                   "src/chrome/tools/test/reference_build/chrome_linux": None,
                                   "src/chrome/tools/test/reference_build/chrome_mac": None,
                        },
                       "safesync_url": "",
                      },
]


不要关闭命令提示,直接在当前目录下输入gclient sync --force 进行源码的同步。接下来就等吧,这个同步的时间会很长,要同步十几G的文件下来。正常情况下会在同步完成之后生成解决方案。如果没有,在当前目录下接着输入gclient runhooks --force。如果确保已经100%同步完成了,生成解决方案的话可以直接输入  python build/gyp_chromium 如果是第一次接触这个项目,那么找一下 src/chrome/chrome.sln 打开,将chrome项目设置为启动项目,然后调试就OK。 ------------------------------------------------------------------------------------------------------------------------------- 自美国时间2014年3月1日开始,谷歌对chromium源码的构建方式做了调整。
关于系统版本只支持Windows 7 x64或更高版本, x86的操作系统已经不再支持。
从chromium r254340(chromium33)之后的版本,默认的调试工具唯一指定为Visual Studio 2013,
所以如果使用最近的源码进行构建,需要安装VS2013并修改 GYP_MSVS_VERSION=2013
而构建工具除了之前一直在使用的 depot_tools ,还增加了 ninja 工具的配合(ninja也是整合在了depot_tools中)。
所以一直在使用旧版本depot_tools的开发者们,需要先更新 depot_tools (之前也就300M左右,更新后约1.86G)了。
另外一个就是要获取VS2013的工具链脚本(toolchain script)
该工具链脚本不会修改系统环境,所以使用VS13或者之前的VS10都木有问题。
下载后的工具链脚本存放在 depot_tools win_toolchain vs2013_files 
如果系统中安装了VS2013,你可以用它来编辑和调试,ninja 将仍然使用depot_tools来构建版本。
具体就以下两步: [plain] view plaincopyprint?python srctoolswintoolchaintoolchain.py   win_toolchainenv.bat  

python srctoolswintoolchaintoolchain.py 
win_toolchainenv.bat

其实,说白了就是要更新一下原来的depot_tools工具。如果depot_tools更新好了,其他的跟之前的大同小异。 比如: [plain] view plaincopyprint?>e:  >cd E:chromium35  E:chromium35>gclient config http://src.chromium.org/svn/releases/35.0.1900.0  E:chromium35>gclient sync --force(以往这一步会强制同步代码后生成解决方案,现在则会在同步一部分后出现找不到文件的错误)  E:chromium35>cd src  E:chromium35>gclient sync(确保源码同步完成)  构建方式有两种,一个是使用 ninja 构建  E:chromium35src>ninja -C outDebug chrome  然后在 out/Debug 下就能看到编译出来的文件。  另一种就是使用我们熟悉的VS来构建,需要设置一个环境变量  GYP_GENERATORS=msvs-ninja,ninja  然后直接  E:chromium35src>gclient runhooks  然后就能在 src/chrome/下找到chrome.sln的解决方案,调试方式就跟以前一样了。  

>e:
>cd E:chromium35
E:chromium35>gclient config http://src.chromium.org/svn/releases/35.0.1900.0
E:chromium35>gclient sync --force(以往这一步会强制同步代码后生成解决方案,现在则会在同步一部分后出现找不到文件的错误)
E:chromium35>cd src
E:chromium35>gclient sync(确保源码同步完成)
构建方式有两种,一个是使用 ninja 构建
E:chromium35src>ninja -C outDebug chrome
然后在 out/Debug 下就能看到编译出来的文件。
另一种就是使用我们熟悉的VS来构建,需要设置一个环境变量
GYP_GENERATORS=msvs-ninja,ninja
然后直接
E:chromium35src>gclient runhooks
然后就能在 src/chrome/下找到chrome.sln的解决方案,调试方式就跟以前一样了。


------------------------------------------------------------------------------------------------------------------------------------------- TIPS:如果是使用了chromium r254340(chromium33)之后的版本,可以直接下载我安装好的depot_tools工具,然后配置一下环境变量就可以直接用了。
1.depot_tools工具,下载后解压配置环境变量。 2.git的更新包(1.9的,下载后解压到depot_tools文件夹下就OK) 3.VS2013开发工具
已经生成解决方案的几个源码包: 1.Chromium36.0.1922.0 2.Chromium35.0.1913.0 3.Chromium35.0.1900.0 4.Chromium34.0.1847.116(chrome的最新正式版) 5.Chromium34.0.1757.0

之前一些旧版本的源码包:(可供学习研究用,VS10的项目,部分已经生成解决方案) 1.Chromium32.0.1678.0
2.Chromium31.0.1650.63
3.Chromium30.0.1587.0
4.Chromium29.0.1547.49 5.Chromium29.0.1544.0 6.Chromium28.0.1500.95
7.Chromium24.0.1301.0


 

在这里再说一下几个问题:

1.是使用VS10和VS13编译项目的一些区别:如果是用的33之前的版本源码生成的10的解决方案,那么vs2010/sp1,win8sdk,DXSDK,depot_tools这些都需要有的,如果是用的最近的源码,只需要弄好最新版的depot_tools,再安装个13就一切OK!(其实使用ninja+vs13混合编译最终调用的vs13是depot_tools下的那个,而我们要再安装个VS13不过是修改和查看代码用而已)运行那个批处理设置一下直接用就行了!

2.一般的设置我们可以放在批处理中设置好,让ninja知道我们要用的vs13,win8sdk等在我们下载好的depot_tools中!在src的同级目录(或者说就是那个.gclient所在的目录)新建一个批处理CreateBuild.bat 运行这个批处理文件可能会比较慢,耐心等待命令行窗口退出后再打开chrome.sln开始编译!批处理的内容如下:

@echo off

for /f %%a in ('where gclient.bat') do set pwd=%%a
set pwd=%pwd:~0,-11%
set file=%pwd%win_toolchaindata.json
set pwd=%pwd:=\%

echo {"runtime_dirs": ["%pwd%win_toolchain\vs2013_files\sys64", "%pwd%win_toolchain\vs2013_files\sys32"], "path": "%pwd%win_toolchain\vs2013_files", "version": "2013e", "wdk": "%pwd%win_toolchain\vs2013_files\wdk", "win8sdk": "%pwd%win_toolchain\vs2013_files\win8sdk"} > %file%

set GYP_MSVS_VERSION=2013
set GYP_GENERATORS=msvs-ninja,ninja
set GYP_DEFINES=component=shared_library

call python  srcbuildgyp_chromium

3.在最终的Release版本产品发布的时候,为了打包的需要可以把shared_library注释掉rem set GYP_DEFINES=component=shared_library改为静态编译,这个时候的编译会比较慢特别是是最后的连接chrome.dll !

4.由于ninja+vs13这种混合编译模式调用的都是depot_tools下的,所以直接在打开vs13中添加文件是不会被编译到的,所以如果有在项目中添加文件就需要修改项目对应的gyp或者gypi文件,将我们添加的文件目录添加到sources节点下,然后重新运行上边的批处理文件!

5.最后再说一点,那就是如果以前使用过vs2010编译,在运行CreateBuild.bat 这个批处理之前要删除“C:Users$(username)AppDataLocalMicrosoftMSBuildv4.0”下props文件中关于$(DXSDK_DIR)的内容。(重要)

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

日前Intel的12代酷睿处理器BIOS源码泄露引发网络热议,网上信息显示文件容量高达6GB,主要用于创建及优化12代酷睿的UEFI BIOS。考虑到BIOS的重要性,这次泄露引发了很多人担心,不过Intel官方已经出来...

关键字: Intel 源码 酷睿 BIOS

在我看来最不值得一提的BUG是那种可以重复复现的,他的稳定复现通常排查起来没啥技术含量, 早些年我处理一个不值得一提的BUG,BUG也很好复现,难点是复现时间固定在4小时左右,BUG由于文件资源未释放引起进程访问文件数目...

关键字: 低级BUG 源码

前一段参与了一个项目,项目内部使用了chromium作为基础库,这也是我第一次接触chromium,到现在差不多半年时间,这里说说使用心得。

关键字: chromium 多线程任务

作者:vivo互联网服务器团队-ZhangZhenglin一、简介RocketMQ是阿里巴巴开源的分布式消息中间件,它借鉴了Kafka实现,支持消息订阅与发布、顺序消息、事务消息、定时消息、消息回溯、死信队列等功能。Ro...

关键字: 源码 存储模块 ck

来源:https://www.cnblogs.com/deng-cc/p/6927447.html最近正好也没什么可忙的,就回过头来鼓捣过去的知识点,到Servlet部分时,以前学习的时候硬是把从上到下的继承关系和接口实...

关键字: IDE 源码 Diagram

一、前言老周这里编译Kafka的版本是2.7,为啥采用这个版本来搭建源码的阅读环境呢?因为该版本相对来说比较新。而我为啥不用2.7后的版本呢?比如2.8,这是因为去掉了ZooKeeper,还不太稳定,生产环境也不太建议使...

关键字: 源码 编译

国庆的时候闲来无事,就随手写了一点之前说的比赛的代码,目标就是保住前100混个大赛的文化衫就行了。现在还混在前50的队伍里面,稳的一比。其实我觉得大家做柔性负载均衡那题的思路其实都不会差太多,就看谁能把关键的信息收集起来...

关键字: 源码

点击上方“小麦大叔”,选择“置顶/星标公众号”福利干货,第一时间送达大家好,我是小麦,以前用单片机做用户交互的菜单的时候,都比较痛苦,如何写一个复用性高,方便维护,可扩展性高的GUI框架呢?当然可以自己动手写一个,这个过...

关键字: 单片机 源码

知道有多少人折腾过液晶显示的菜单,我觉得很多人都应该搞过,我还记得以前大学参加电子设计竞赛获奖的作品,我就用到了一个12864,里面有菜单功能。以前可能觉得菜单高大上,其实并不是想象中的复杂,本文为大家分享一个用单色屏做...

关键字: 源码

知道有多少人折腾过液晶显示的菜单,我觉得很多人都应该搞过,我还记得以前大学参加电子设计竞赛获奖的作品,我就用到了一个12864,里面有菜单功能。以前可能觉得菜单高大上,其实并不是想象中的复杂,本文为大家分享一个用单色屏做...

关键字: 源码
关闭
关闭