跳到内容

Windows 移植

它使用 cairo 作为图形后端,libcurl 作为网络后端。它仅支持 64 位 Windows。

安装开发工具

安装最新版 Visual Studio 并选择“使用 C++ 的桌面开发”工作负载

激活开发者模式。build-webkit 脚本会创建指向生成的 compile_commands.json 的符号链接。

安装 CMake、Perl、Python、Ruby、gperf (GnuWin32 Gperf)、LLVM 和 Ninja。Python 3.12 目前与 WebKit 存在问题。请使用 Python 3.11。

您可以使用 Chocolatey 安装这些工具。ActivePerl 的 Chocolatey 包目前存在问题且没有维护者。XAMPP 包含 Perl,并且运行布局测试需要 XAMPP。请改为安装 XAMPP。

choco install -y xampp-81 python311 ruby git cmake gperf llvm ninja

为 run-webkit-tests 和 git-webkit 安装 pywin32 Python 模块。

python -m pip install pywin32

Windows Git 默认启用 `autocrlf`。但是,某些布局测试文件必须以 LF 行结束符样式检出。请参阅 Bug 240158

git config --global core.autocrlf input

使用 WinGet

如果您更喜欢 WinGet 而不是 Chocolatey,则可以使用它。在提升权限的 PowerShell 或 cmd 提示符中调用以下命令。

winget install --scope=machine --id Git.Git Kitware.CMake Ninja-build.Ninja Python.Python.3.11 RubyInstallerTeam.Ruby.3.2 ApacheFriends.Xampp.8.2 LLVM.LLVM
winget install --id GnuWin32.Gperf

如果未指定 `--scope=machine`,Python 将安装在您的用户配置文件目录下。

WinGet 可能不会将路径添加到您的电脑中。如果出现某些错误,请检查您的路径设置,包括 LLVM 和 GnuWin32(Gperf)。

WebKit 命令提示符

要编译、运行程序和运行测试,您需要设置一些环境变量。为了便于开发,建议创建一个批处理文件来设置环境变量并打开 PowerShell。创建一个包含以下内容并根据您的电脑进行调整的批处理文件。将其放在 WebKit 源代码的顶层目录中。然后双击它打开 PowerShell,我们以后称此打开的 shell 为“WebKit 命令提示符”。

@echo off
cd %~dp0

path C:\xampp\apache\bin;%path%
path C:\xampp\perl\bin;%path%
path %ProgramFiles%\CMake\bin;%path%
path %ProgramFiles(x86)%\Microsoft Visual Studio\Installer;%path%
for /F "usebackq delims=" %%I in (`vswhere.exe -latest -property installationPath`) do set VSPATH=%%I

rem set WEBKIT_LIBRARIES=%~dp0WebKitLibraries\win
path %~dp0WebKitLibraries\win\bin;%path%
set WEBKIT_TESTFONTS=%~dp0Tools\WebKitTestRunner\fonts
set DUMPRENDERTREE_TEMP=%TEMP%

set CC=clang-cl
set CXX=clang-cl

rem set http_proxy=http://your-proxy:8080
rem set https_proxy=%http_proxy%

rem You can pass necessary JSC options https://github.com/WebKit/WebKit/blob/main/Source/JavaScriptCore/runtime/OptionsList.h#L83-L607.
rem set JSC_dumpOptions=1
rem set JSC_useJIT=0
rem set JSC_useDFGJIT=0
rem set JSC_useRegExpJIT=0
rem set JSC_useDOMJIT=0

rem You can show check TextureMapper FPS via WEBKIT_SHOW_FPS.
rem set WEBKIT_SHOW_FPS=1

call "%VSPATH%\VC\Auxiliary\Build\vcvars64.bat"
cd %~dp0
start powershell

如果您愿意,可以将 `powershell` 替换为 `cmd` 或 `wt` (Windows Terminal)。

构建

在 WebKit 命令提示符中,调用 `build-webkit` 开始构建。

perl Tools/Scripts/build-webkit --release

执行 `build-webkit` 时,所需的库 WebKitRequirements 将自动下载。它每次都会检查最新的 WebKitRequirements。我建议使用 `--skip-library-update` 进行增量构建,以加快下次构建的速度。

python Tools\Scripts\update-webkit-win-libs.py
perl Tools\Scripts\build-webkit --release --skip-library-update

如果看到 `WebKit is now built` 消息,则表示构建成功。运行您的 `MiniBrowser`。

WebKitBuild/Release/bin64/MiniBrowser.exe

您可以根据此说明在调试器下运行程序。

在 Visual Studio 中构建

您可以使用 CMake Visual Studio 生成器而不是 Ninja 生成器。安装 MSBuild 的LLVM 扩展。它捆绑了一个 Clang 编译器。但是,如果捆绑的编译器太旧,您可能需要设置自定义的 LLVM 位置和工具集。您可以设置 LLVMInstallDir 和 LLVMToolsVersion 环境变量,而不是创建 Directory.build.props 文件。

在 WebKit 命令提示符中,

perl Tools/Scripts/build-webkit --release --no-ninja --generate-project-only

通过从 WebKit 命令提示符调用 devenv 命令来打开生成的解决方案文件。

devenv WebKitBuild\Release\WebKit.sln

构建 “MiniBrowser” 项目。

运行测试

WebKit 测试运行器 run-webkit-tests 使用命令行调试器 NTSD 获取崩溃日志。但是,Windows SDK 安装程序默认不安装它。

  1. 右键单击 Windows 开始菜单
  2. 选择“应用和功能”菜单项
  3. 从应用程序列表中单击“Windows 软件开发工具包”
  4. 单击“修改”按钮
  5. 选择“更改”并单击“下一步”按钮
  6. 选择“适用于 Windows 的调试工具”并继续安装

按照上述说明安装 XAMPP。

安装所需的 Python 和 Ruby 模块。

python -m pip install pywin32
gem install webrick

如果 Apache 服务正在运行,请停止它。

net stop apache2.4

某些扩展需要注册为 CGI。根据您的 Perl 和 Python 路径修改以下命令,并以管理员身份运行它们。

使用 Chocolatey 的示例

reg add HKEY_CLASSES_ROOT\.pl\Shell\ExecCGI\Command /ve /d "c:\xampp\perl\bin\perl.exe -T"
reg add HKEY_CLASSES_ROOT\.cgi\Shell\ExecCGI\Command /ve /d "c:\xampp\perl\bin\perl.exe -T"
reg add HKEY_CLASSES_ROOT\.py\Shell\ExecCGI\Command /ve /d "c:\Python311\python.exe -X utf8"

使用 WinGet 的示例

reg add HKEY_CLASSES_ROOT\.pl\Shell\ExecCGI\Command /ve /d "c:\xampp\perl\bin\perl.exe -T"
reg add HKEY_CLASSES_ROOT\.cgi\Shell\ExecCGI\Command /ve /d "c:\xampp\perl\bin\perl.exe -T"
reg add HKEY_CLASSES_ROOT\.py\Shell\ExecCGI\Command /ve /d "\`"C:\Program Files\Python311\python.exe\`" -X utf8"

您的 PATH 环境变量中需要有 openssl.exe 才能运行 wpt 服务器。XAMPP 的 C:\xampp\apache\bin 目录中包含 openssl.exe。将该目录添加到您的 PATH 中。

以管理员身份打开 WebKit 命令提示符,因为 HTTP 测试需要运行 Apache 服务。

调用 `run-webkit-tests`。

python Tools/Scripts/run-webkit-tests --release

如果您使用的是日文 Windows,某些布局测试会因表单控件大小差异而失败。`GetStockObject(DEFAULT_GUI_FONT)` 在日文 Windows 上返回 `MS UI Gothic`。请删除 `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\GRE_Initialize` 中的 `GUIFont.Facename`。并将 `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes\MS Shell Dlg` 中的 `MS UI Gothic` 替换为 `Microsoft Sans Serif`。此外,将系统区域设置更改为英语,因为 Python 脚本在非英语系统区域设置下会崩溃。请参阅 Bug 273060

如果 HTTP 测试因套接字计数限制而出现不稳定故障,请增加用户端口范围。请参阅 Bug 224523

netsh int ipv4 set dynamicport tcp start=1025 num=64511

在 Docker 中运行测试

您可以使用 Docker 通过挂载主机目录来运行 LayoutTests。

docker run -it --rm --cpu-count=8 --memory=16g -v %cd%:c:\repo -w c:\repo webkitdev/msbuild

从 Buildbot 下载构建产物