在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命令来更新仓库。

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

One thought to “在windows上编译chromium”

  1. Good day! imleek.com

    We make available

    Sending your business proposition through the feedback form which can be found on the sites in the Communication partition. Feedback forms are filled in by our software and the captcha is solved. The profit of this method is that messages sent through feedback forms are whitelisted. This technique improve the chances that your message will be read.

    Our database contains more than 25 million sites around the world to which we can send your message.

    The cost of one million messages 49 USD

    FREE TEST mailing of 50,000 messages to any country of your choice.

    This message is automatically generated to use our contacts for communication.

    Contact us.
    Telegram – @FeedbackFormEU
    Skype FeedbackForm2019
    Email – FeedbackForm@make-success.com
    WhatsApp – +44 7598 509161

发表评论

电子邮件地址不会被公开。 必填项已用*标注