一、Chromium下载
首先应该去chromium官网去看一看,地址如下,如果可以看的明白最好了。按照Google说的一步一步去做,基本问题不是太大,不过还是有许多坑需要这里说明一下的。如果按照Google步骤来没有问题,可以不用继续往下看。
https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md
1. 在下载chromium之前先要准备好环境,首先是系统,如果windows的话必须要是win7以上版本,最好能够使win10。个人建议win10,好像运行vs2015快些;还有vs,最好按照google在说明文档的要求来吧,我这使用的是vs2015,版本的话最好还是安装企业版本update 3以上吧,当然官网说社区版也是可以。安装的话需要安装Desktop development with C++、MFC and ATL support、以及sdk的相关都需要选上。之后就需要安装sdk,最新的好像需要 win10的10.0.15063.468sdk了,我目前用的的是10.0.14393.795,建议如果不是版本不是太新,可以使用14393的。注意:需要先安装vs之后再安装sdk,否则会出现chrome无法运行的错误,如果vs更新了的话,需要将sdk卸载后重新安装。
2. chromium下载需要depot_tools工具,该工具集成了git、Python、ninja等等一系列的Google针对chromium进行下载、编译的工具。首先需要下载自己的depot_tools、或者是纯净的depot_tools,为什么这么说,好像从别人那拷贝该工具好像是有些功能是无法使用的,为了保证chromium能正确下载和编译,还是最好自己下载,或是使用纯净的depot_tools。
3. 然后需要将depot_tools的路径加入到环境变量path。最好放在最前面,如果你电脑之前下载了Python,至少要在Python路径的前面。
4. 在depot_tools下使用cmd运行gclient。这样会下载git、Python等工具。
5. 接着配置git,如下进行配置:
$ git config --global user.name "My Name"
$ git config --global user.email "my-name@chromium.org"
$ git config --global core.autocrlf false
$ git config --global core.filemode false
$ git config --global branch.autosetuprebase always
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
set GYP_MSVS_VERSION=2015
setGYP_GENERATORS=msvs-ninja,ninja
setGYP_DEFINES=component=shared_library
在cmd下进行设置,如果这个cmd关了,该值就没有了,除非在环境变量下进行新建变量设置,以上最好在下载之前进行设置一下,否则下载会有问题,至少需要设置第一个变量,要不然下载会报错的。下面那几个参数可以不用设置,等编译的时候才需要,提前设置好也可以。具体意思的话:第一个设置主要是使用本地的vs进行配置depot_tools;第二个是设置vs的版本,我是使用的vs2015,现在最新的已经需要vs2017了;第三个是设置chromium的编译可以使用ninja、vs进行编译;第四个是和生成debug版本的,如果需要生成relase版本需要设置其他值。具体等编译的时候可以了解。
7. 接着可以下载chromium,时间比较漫长。。。按照该方法是下载最新的master的主支干的代码,chromium的代码主要有五个版本:canary_asan、canary、dev、beta、stable。建议下载stable的版本吧。可以通过如下地址找到最新的稳定版本,如果想找老版本的stable版本,好像只能去google了。
https://omahaproxy.appspot.com/
具体通过如下命令进行下载,不管是下载哪个版本都需要将主支干的所有代码下载下来:
$ mkdir chromium && cd chromium
$ fetch chromium
接着会是漫长的等待。。。
这个过程中可能由于各种原因,会出现中断,这时候需要使用gclient sync进行同步下载,为了安全起见,最后多次执行该命令,以保证chromium被完全下载。
8. 如果想使用指定的release branch,可以通过以下地址进行详细操作。
https://www.chromium.org/developers/how-tos/get-the-code/working-with-release-branches
其实不一定非要按照如上地址所说的步骤一一操作,可以简单使用如下命令即可:
二、chromium编译
由于chromium代码比较多,还有好多第三方的东西,所以编译时间比较长,好的配置会有3个小时,正常我编了几次都需要5个小时左右。
1. 编译有两种方式,可以通过ninja,主要是生成build.ninja文件,里面规则类似Makefile。想具体了解ninja是什么可以访问以下地址。
还有就是通过vs进行编译,建议通过ninja进行编译,速度应该会比vs快不少,vs会加载6000多个工程,加载编译速度比较慢,当然根据需要可以生成单独一个工程,方便调试。
2. 首先需要生成编译目录,命令:gn gen out\default。在这之前建议最好使用gn args out\default进行配置下,会在out\default目录下生成一个args.gn文件,主要配置编译的环境,如果不进行配置会按照你电脑的cpu、系统进行默认配置。具体参数可以看如下地址。
https://www.chromium.org/developers/gn-build-configuration
简单介绍几个,如果想生成32位的chromium,可以使用target_cpu= "x86";如果想生成release版本可以设置is_debug = false。如果想使用debug的话最好先设置true,等最后调试测试结束后再进行生成release版本,debug版本会生成dll动态库,这样在打开chromium时会很慢,而release版本则是使用lib静态库,加载速度会快很多,如果想修改代码还是先使用debug版本,最后发布可以使用release版本。
3. 之前第6条提到的几个环境参数如果没有设置,必须要在这里进行设置
生成编译目录最好使用gn genout\default –ide=vs2015,这样可以在out\default目录下看到all.sln的工程。想要查看其它的一些参数可以使用gn help gen。
4. 最后使用ninja -C out\default chrome,-C表示指定目录。第一次必须要这样全部编译一下。继续开始漫长的等待。。。
5. 编译结束就可以使用运行,查看版本是否正确。
6. 之后如果想单独编译一个工程,可以将chrome换成你想编译的工程名字,具体可以使用gn ls out\Default查看所有工程。比如我想重新编译下net工程,可以使用ninja –C out\default net命令。可能你只关注某个单一的工程,可以生成单独某个工程的.sln工程。举个栗子如下:
gn gen--ide=vs2015 --filters=//third_party/boringssl:boringssl --sln=boringssl--no-deps out\Default\obj\third_party\boringssl
其中—filters必须要按照gn lsout\default下的工程进行设置,--sln为工程的名字,最后为工程的生成目录。参数的意义可以通过gn help gen 进行查看。
备注PS:最后需要说明的是移植的问题:因为生成编译目录下有许多绝对路径,例如build.ninja等等文件,如果想移植到另一台机子上必须放在同一个盘符和目录下。同时必须还需要windows账户的名字和你下载chromium的机子保持一致,要不然编译时还是出错,主要还是绝对路径的问题,编译时会使用环境变量TMP,而TMP的值包含了系统账户的名字。