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 安装程序默认不安装它。
- 右键单击 Windows 开始菜单
- 选择“应用和功能”菜单项
- 从应用程序列表中单击“Windows 软件开发工具包”
- 单击“修改”按钮
- 选择“更改”并单击“下一步”按钮
- 选择“适用于 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 下载构建产物¶
- 前往 Windows-64-bit-Release-Build Buildbot 构建器页面。
- 点击任意绿色的“构建 #”。
- 点击“compile-webkit”下的“Archive”链接下载 zip 文件
- 下载相应版本的 WebKitRequirements。
- 解压它们,将 WebKitRequirements 的所有 DLL 复制到 MiniBrowser.exe 所在的目录。
- 安装最新版的 Microsoft Visual C++ Redistributable for Visual Studio 的 vc_redist.x64.exe。