在windows上编译chromium

参考来源: https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md

系统要求

  • 64位Intel机器,至少8GB RAM。推荐16GB+。
  • NTFS格式的硬盘驱动器上至少有100GB的可用磁盘空间。FAT32不起作用,因为一些Git打包文件大于4GB。
  • 适当版本的Visual Studio,如下所述。
  • Windows 7或更高版本。

设置Windows

Visual Studio

Chromium需要Visual Studio 2017(> = 15.7.2)或2019(> = 16.0.0)才能构建。Visual Studio也可用于调试Chromium,因为Visual Studio 2019可以更好地处理Chromium的大型调试信息,因此它更受欢迎。使用clang-cl编译器,但需要Visual Studio的头文件,库和一些工具。如果适用于您的许可证,Visual Studio Community Edition应该可以正常工作。您必须安装“使用C ++进行桌面开发”组件和“MFC/ATL支持”子组件。这可以通过将这些参数传递给Visual Studio安装程序从命令行完成(请参阅下面的ARM64指令):

$ PATH_TO_INSTALLER.EXE ^
--add Microsoft.VisualStudio.Workload.NativeDesktop ^
--add Microsoft.VisualStudio.Component.VC.ATLMFC ^
--includeRecommended

如果要为ARM64 Win32构建,则需要一些额外的参数。该案例的完整集是:

$ PATH_TO_INSTALLER.EXE ^
--add Microsoft.VisualStudio.Workload.NativeDesktop ^
--add Microsoft.VisualStudio.Component.VC.ATLMFC ^
--add Microsoft.VisualStudio.Component.VC.Tools.ARM64 ^
--add Microsoft.VisualStudio.Component.VC.MFC.ARM64 ^
--includeRecommended

您必须安装版本10.0.18362或更高版本的Windows 10 SDK。这可以单独安装,也可以通过选中Visual Studio Installer中的相应框来安装。

还必须安装SDK调试工具。如果通过Visual Studio安装程序安装了Windows 10 SDK,则可以通过以下方式安装它们:控制面板→程序→程序和功能→选择“Windows软件开发工具包”→更改→更改→检查“Windows调试工具” “→改变。或者,您可以下载独立SDK安装程序并使用它来安装调试工具。

安装 depot_tools

下载depot_tools包并将其解压缩到某处。

警告:不要使用资源管理器中的拖放或复制粘贴提取,这不会提取隐藏的“.git”文件夹,这是depot_tools自动更新自身所必需的。您可以使用右键菜单的“解压到当前文件夹”。

将depot_tools添加到环境变量PATH, 并放在PATH的开头位置(必须先于任何Python安装)。假设您将软件包解压缩到C:\src\depot_tools,请打开:

控制面板→系统和安全→系统→高级系统设置

如果您具有管理员访问权限,请修改PATH系统变量并将C:\src\depot_tools放在前面(如果你安装了其他版本的python和git, 必须保证在这前面)。

如果您没有管理员访问权限,则可以添加用户级PATH环境变量并放在C:\src\depot_tools前面,但如果您的系统PATH中包含Python,那么后续操作你可能会失败。

另外,以相同的方式添加DEPOT_TOOLS_WIN_TOOLCHAIN系统变量,并将其设置为0.这告诉depot_tools使用本地安装的Visual Studio版本(默认情况下,depot_tools将尝试使用google内部版本)。如果要使用Visual Studio 2019而不是Visual Studio 2017(默认设置)进行构建,请将GYP_MSVS_VERSION环境变量设置为2019。

从cmd.exe shell运行命令gclient(不带参数)。在第一次运行时,gclient将安装使用代码所需的所有Windows下的必要软件,包括msysgit和python。

  • 如果从非cmd shell(例如,cygwin,PowerShell)运行gclient,它可能看起来运行正常,但msysgit,python和其他工具可能无法正确安装。
  • 如果在第一次运行gclient时看到文件系统出现奇怪错误,则可能需要禁用Windows索引

运行gclient后打开命令提示符并键入where python并确认depot_tools python.bat位于python.exe的任何副本之前。

获取代码

首先,配置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

chromium的 checkout 创建一个目录并进入到目录里(您可以随意调用它并将其放在任何您喜欢的位置,只要完整路径没有空格):

$ mkdir chromium && cd chromium

运行该fetch工具depot_tools以检查代码及其依赖项。

$ fetch chromium

如果您不想要完整的仓库历史记录,可以通过添加--no-history标记来节省大量时间fetch

$ fetch  --no-history chromium

即使是快速连接,预计命令也需要30分钟,而对于较慢的连接则需要数小时。

fetch完成时,它会创建一个隐藏的.gclient文件和一个名为目录src在工作目录。其余说明假设您已切换到src目录:

$ cd src

可选:如果您希望构建与某些Google服务通信,也可以安装API密钥,但对于大多数开发和测试目的而言,这不是必需的。

设置构建

Chromium使用Ninja作为其主要构建工具以及一个名为GN的工具来生成.ninja文件。您可以使用不同的配置创建任意数量的构建目录。要创建构建目录:

$ gn gen out/Default
  • 您只需为每个新的构建目录运行一次,Ninja将根据需要更新构建文件。
  • 您可以替换Default为其他名称,但它应该是一个子目录out
  • 对于其他构建参数,包括发布设置,请参阅GN构建配置。默认情况下,调试组件构建与当前主机操作系统和CPU匹配。
  • 有关GN的更多信息,请gn help在命令行上运行或阅读快速入门指南

使用Visual Studio IDE

如果要使用Visual Studio IDE,请在生成输出目录时使用--ide命令行参数gn gen(如获取代码页所述):

$ gn gen --ide=vs out\Default
$ devenv out\Default\all.sln

GN将all.sln在您的构建目录中生成一个文件。它将在内部使用Ninja进行编译,同时仍然允许大多数IDE功能工作(没有本机Visual Studio编译模式)。如果再次手动运行“gen”,则需要重新提供此参数,但通常GN会在构建时自动使构建和IDE文件保持最新。

生成的解决方案将包含数千个项目,加载速度非常慢。使用该--filters参数来限制仅为您感兴趣的代码生成项目文件。虽然这也将限制项目资源管理器中显示的文件,但调试仍然有效,您可以在手动打开的文件中设置断点。一个最小的解决方案,可让您在IDE中编译和运行Chrome,但不会显示任何源文件:

 $ gn gen --ide=vs --filters=//chrome --no-deps out\Default 

您可以选择性地将您关心的其他目录添加到过滤器中,如下所示:--filters=//chrome;//third_party/WebKit/*;//gpu/*

还有其他选项可用于控制解决方案的生成方式,并gn help gen针对当前文档运行。

默认情况下,在Visual Studio中开始调试时,调试器将仅附加到主浏览器进程。要调试所有Chrome,请安装Microsoft的Child Process Debugging Power Tool。您还需要以管理员身份运行Visual Studio,否则它将无法连接到某些Chrome的子进程。

也可以在没有解决方案文件的情况下在Visual Studio中调试和开发Chrome。只需“打开”您的chrome.exe二进制文件File->Open->Project/Solution,或者从Visual Studio命令提示符中“打开” ,如下所示:devenv /debugexe out\Debug\chrome.exe <your arguments>。许多Visual Studio的代码编辑功能在此配置中不起作用,但通过安装VsChromium Visual Studio扩展,您可以获得源代码以及其他有用的功能(如代码搜索)。

更快的构建

  • 通过从防病毒和索引软件中排除构建目录来减少文件系统开销。
  • 将构建树存储在快速磁盘(最好是SSD)上。
  • 核心越多越好(20+都不过分),需要大量的RAM(64GB就挺好的)。

有一些gn标志可以提高构建速度。您可以在创建输出目录(gn args out/Default)或gn gen命令行(gn gen out/Default --args="is_component_build = true is_debug = true")时出现的编辑器中指定这些。要考虑使用的一些有用设置包括:

  • use_jumbo_build = true– Jumbo / unity构建。
  • is_component_build = true – 这使用更多,更小的DLL和增量链接。
  • enable_nacl = false – 这会禁用本地构建通常不需要的Native Client。
  • target_cpu = "x86" – x86构建比x64构建稍快,并支持更多目标的增量链接。请注意,如果您设置此但不设置enable_nacl = false,那么构建时间可能会变得更糟。
  • blink_symbol_level = 0 – 关闭闪烁的源级调试以减少构建时间,如果您不打算调试闪烁则适当。

为了加快链接速度,您可以设置symbol_level = 1– 此选项可以减少链接器必须执行的工作,但是当设置此选项时,您无法进行源级调试。从symbol_level = 2(默认)切换到symbol_level = 1需要重新编译所有内容。

但是,许多机器上的构建需要花费很多时间。

编译Chromium

使用以下命令使用Ninja构建Chromium(“chrome”目标):

 autoninja -C out\Default chrome 

autoninja是一个包装器,它自动为传递给的参数提供最佳值ninja

您可以通过gn ls out/Default从命令行运行从GN获取所有其他构建目标的列表。要编译一个,将N标签传递给Ninja,前面没有“//”(因此//chrome/test:unit_tests使用ninja -C out/Default chrome/test:unit_tests`)。

运行Chromium

构建完成后,您只需运行浏览器即可:

 $ out\Default\chrome.exe 

(命令中的“.exe”后缀实际上是可选的)。

运行测试目标

您可以以相同的方式运行测试。您还可以使用--gtest_filterarg 限制运行哪些测试,例如:

 $ out\Default\unit_tests.exe --gtest_filter="PushClientTest.*" 

您可以在GitHub页面上找到有关GoogleTest的更多信息。

更新您的checkout

要更新现有结帐,您可以运行

$ git rebase-update 
$ gclient sync 

第一个命令更新主Chromium源存储库,并在树的顶部(也称为Git分支origin/master)重新绑定任何本地分支。如果您不想使用此脚本,您也可以使用git pull或其他常见的Git命令来更新仓库。

第二个命令将子存储库同步到适当的版本,并根据需要重新运行挂钩。

发表评论