原文转载于:http://blog.csdn.net/kuerjinjin/article/details/23563059
从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:盘下。
- <span style="font-size:18px;"><PropertyGroup>
- <IncludePath>$(DXSDK_DIR)\Include;$(IncludePath)</IncludePath>
- <LibraryPath>$(DXSDK_DIR)\Lib\x86;$(LibraryPath)</LibraryPath>
- </PropertyGroup>
- <PropertyGroup>
- <IncludePath>$(DXSDK_DIR)\Include;$(IncludePath)</IncludePath>
- <LibraryPath>$(DXSDK_DIR)\Lib\x64;$(LibraryPath)</LibraryPath>
- </PropertyGroup> </span>
<span style="font-size:18px;"><PropertyGroup>
<IncludePath>$(DXSDK_DIR)\Include;$(IncludePath)</IncludePath>
<LibraryPath>$(DXSDK_DIR)\Lib\x86;$(LibraryPath)</LibraryPath>
</PropertyGroup>
<PropertyGroup>
<IncludePath>$(DXSDK_DIR)\Include;$(IncludePath)</IncludePath>
<LibraryPath>$(DXSDK_DIR)\Lib\x64;$(LibraryPath)</LibraryPath>
</PropertyGroup> </span>
- <span style="font-size:18px;">>e:
- >cd chromium30
- >gclient config http://src.chromium.org/svn/releases/30.0.1559.0/ </span>
<span style="font-size:18px;">>e:
>cd chromium30
>gclient config http://src.chromium.org/svn/releases/30.0.1559.0/ </span>
- <span style="font-size:18px;">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": "",
- },
- ]</span>
<span style="font-size:18px;">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": "",
},
]</span>
关于系统版本只支持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来构建版本。
- <span style="font-size:18px;">python src\tools\win\toolchain\toolchain.py
- win_toolchain\env.bat</span>
<span style="font-size:18px;">python src\tools\win\toolchain\toolchain.py
win_toolchain\env.bat</span>
其实,说白了就是要更新一下原来的depot_tools工具。如果depot_tools更新好了,其他的跟之前的大同小异。
- <span style="font-size:18px;">>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:\chromium35\src>ninja -C out\Debug chrome
- 然后在 out/Debug 下就能看到编译出来的文件。
- 另一种就是使用我们熟悉的VS来构建,需要设置一个环境变量
- GYP_GENERATORS=msvs-ninja,ninja
- 然后直接
- E:\chromium35\src>gclient runhooks
- 然后就能在 src/chrome/下找到chrome.sln的解决方案,调试方式就跟以前一样了。</span>
<span style="font-size:18px;">>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:\chromium35\src>ninja -C out\Debug chrome
然后在 out/Debug 下就能看到编译出来的文件。
另一种就是使用我们熟悉的VS来构建,需要设置一个环境变量
GYP_GENERATORS=msvs-ninja,ninja
然后直接
E:\chromium35\src>gclient runhooks
然后就能在 src/chrome/下找到chrome.sln的解决方案,调试方式就跟以前一样了。</span>
1.depot_tools工具,下载后解压配置环境变量。
在这里再说一下几个问题:
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_toolchain\data.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 src\build\gyp_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)\AppData\Local\Microsoft\MSBuild\v4.0”下props文件中关于$(DXSDK_DIR)的内容。(重要)