当前位置: 首页 > news >正文

WebKit的Windows接口(适用2024年11月份版)

WebKit的Windows接口

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

安装开发工具¶

安装带有“使用c++进行桌面开发”工作负载的最新Visual Studio。

Activate Developer Mode.激活开发者模式。Build-webkit脚本创建一个指向生成的compile_commands.json的符号链接。

安装CMake、Perl、Python、Ruby、gperf (GnuWin32 gperf)、LLVM、Ninja。Python 3.12目前对WebKit有一个问题a problem for WebKit at the moment。使用Python 3.11。

您可以使用Chocolatey安装工具。ActivePerl巧克力包有一个问题,现在没有包维护者。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默认启用了autoplf。但是,有些布局测试文件必须以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可能不会将路径附加到您的PC中。如果出现错误,请检查您的路径设置,包括LLVM和GnuWin32(Gperf)。

WebKit命令提示符¶

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

@echo off
cd %~dp0path 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=%%Irem 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-clrem 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=0rem You can show check TextureMapper FPS via WEBKIT_SHOW_FPS.
rem set WEBKIT_SHOW_FPS=1call "%VSPATH%\VC\Auxiliary\Build\vcvars64.bat"
cd %~dp0
start powershell

如果你喜欢,你可以用cmd或wt (Windows终端)替换powershell。

构建¶

在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

您可以使用此指令在调试器下运行程序 this instruction.

使用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 Software Development Kit”
  4. 点击“修改”按钮
  5. 选择“更改”并按“下一步”按钮
  6. 选择“Debugging Tools for Windows”,继续安装

如上所述安装XAMPP。

安装所需的Python和Ruby模块。

python -m pip install pywin32
gem install webrick

如果Apache服务正在运行,请停止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包含openssl.exe在C:\ XAMPP \apache\bin目录下。将目录追加到PATH。

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

调用run-webkit-tests。

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

如果使用的是日文窗口,则由于表单控件大小不同,一些布局测试会失败。GetStockObject(DEFAULT_GUI_FONT)返回MS UI哥特。删除GUIFont。HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\GRE_Initialize。并且,在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ fontsubstitute \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 builder page页面.
  • 点击任何绿色的“Build #”。
  • 点击“compile-webkit”下的“Archive”链接下载压缩包
  • 下载相应版本的WebKitRequirements.
  • 解包,将WebKitRequirements的所有DLL拷贝到MiniBrowser.exe目录下
  • 安装最新的Microsoft Visual c++ Redistributable for Visual Studio的vc_redists .x64.exe

WebKit和WebKit徽标是Apple Inc.的商标。.

相关文章:

WebKit的Windows接口(适用2024年11月份版)

WebKit的Windows接口 使用cairo作为图形后端,libcurl作为网络后端。并且它只支持64位的Windows。 安装开发工具 安装带有“使用c进行桌面开发”工作负载的最新Visual Studio。 Activate Developer Mode.激活开发者模式。Build-webkit脚本创建一个指向生成的comp…...

Android 最新的AndroidStudio引入依赖失败如何解决?如:Failed to resolve:xxxx

错误信息: 在引入依赖时报错:Failed to resolve: xxx.xxxx:1.1.0 解决方案: 需要修改maven库的代理,否则就需要翻墙编译 新的AndroidStudio版本比较坑,修改代理的位置发生了变化: 最新变化:…...

ue5 蓝图学习(一)结构体的使用

在内容浏览器中右键 蓝图-选择结构体 下面这东西就是结构体,和C的结构体差不多 双击一下 可以添加变量,设置变量的类型和默认值。 可以在关卡蓝图中调用它。 点击打开关卡蓝图,添加变量 在变量的右侧,变量类型里搜索strcut&#…...

docker--工作目录迁移

前言 安装docker,默认的情况容器的默认存储路径会存储系统盘的 /var/lib/docker 目录下,系统盘一般默认 50G,容器输出的所有的日志,文件,镜像,都会存在这个地方,时间久了就会占满系统盘。 一、…...

Golang | Leetcode Golang题解之第556题下一个更大元素III

题目&#xff1a; 题解&#xff1a; func nextGreaterElement(n int) int {x, cnt : n, 1for ; x > 10 && x/10%10 > x%10; x / 10 {cnt}x / 10if x 0 {return -1}targetDigit : x % 10x2, cnt2 : n, 0for ; x2%10 < targetDigit; x2 / 10 {cnt2}x x2%10 -…...

2分钟在阿里云ECS控制台部署个人应用(图文示例)

作为一名程序员&#xff0c;我有大量的个人代码和应用托管在Github/Gitee这些代码仓库。当我想要部署这些代码到我的阿里云ECS服务器时&#xff0c;往往会很麻烦&#xff0c;主要问题有这些&#xff1a; 需要手动安装和配置git&#xff0c;过程非常繁琐。每次都需要登录到机器…...

2023.8 用于生物医学问答的选择性 UMLS 知识注入

Selective UMLS knowledge infusion for biomedical question answering Selective UMLS knowledge infusion for biomedical question answering | Scientific Reports 韩国首尔国立大学研究生院生物工程跨学科项目 问题 如何高效地将生物医学知识注入预训练语言模型&#x…...

chat2db调用ollama实现数据库的操作。

只试了mysql的调用。 其它的我也不用&#xff0c;本来想充钱算了。最后一看单位是美刀。就放弃了这分心。于是折腾了一下。 本地运行chat2db 及chat2db ui https://gitee.com/ooooinfo/Chat2DB clone 后运行起来 chat2db的java端&#xff0c;我现在搞不清这一个项目是有没有…...

Rust 生态系统的未来与学习方向

Rust 生态系统的未来与学习方向 Rust 作为一门系统编程语言&#xff0c;因其内存安全性、并发性能以及生态的不断壮大&#xff0c;已逐渐成为开发者和企业的首选语言之一。随着技术的进步&#xff0c;Rust 的生态系统持续发展&#xff0c;涉及多个领域&#xff0c;包括 Web 开…...

Vue的基础使用

一、为什么要学习Vue 1.前端必备技能 2.岗位多&#xff0c;绝大互联网公司都在使用Vue 3.提高开发效率 4.高薪必备技能&#xff08;Vue2Vue3&#xff09; 二、什么是Vue 概念&#xff1a;Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套 构建用户界面 的 渐进式 框架…...

c++中,头文件包含iostream.h和`<iostream>`的差别

引言 在编写c代码时&#xff0c;有时候包含头文件iostream.h&#xff0c;有时候又包含<iostream>&#xff0c;初学者会对此感到很疑惑。 实际上&#xff0c;这两者是同一个头文件&#xff0c;只是包含方式不同&#xff0c;这是由于C的历史原因造成的&#xff0c;下面解释…...

界面控件DevExpress WPF中文教程:TreeList视图及创建分配视图

DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序&#xff0c;这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…...

软件工程笔记二—— 软件生存期模型

目录 瀑布模型 瀑布模型的特点 阶段间具有顺序性和依赖性。 推迟实现的观点 质量保证的观点 瀑布模型的优点 瀑布模型的缺点 快速原型模型 快速原型模型的优点 快速原型模型的缺点 增量模型 增量模型的优点 增量构件开发 螺旋模型 完整的螺旋模型&#xff08;顺…...

关于若依500验证码问题的求助

关于若依框架中验证码出现500错误的问题&#xff0c;这通常表示服务器内部错误。以下是一些可能的原因及解决方案&#xff1a; 一、配置文件问题 .env.production文件&#xff1a; 确保.env.production文件中的VUE_APP_BASE_API已经修改成服务器上的域名地址&#xff0c;而不…...

网络安全:守护数字世界的坚固防线

随着信息技术的飞速发展&#xff0c;网络已成为我们生活中不可或缺的一部分。它为我们提供了便捷的信息获取、交流娱乐的渠道&#xff0c;但同时也带来了前所未有的安全挑战。网络安全&#xff0c;这一看似遥远却又紧密相连的概念&#xff0c;正日益成为我们共同关注的焦点。 …...

Vue前端开发,组件及组件的使用

什么是组件 组件(Component)是Vue中最强大的功能之一&#xff0c;每个Vue 文件就是一个个独立的组件&#xff0c;组件也可以被其他组件调用&#xff0c;形成嵌套关系&#xff0c;大部分的应用都是由各类不同功能的小组件进行构建&#xff0c;形成一个功能强大的大组件树系统&a…...

from sklearn.feature_selection import VarianceThreshold.移除低方差的特征来减少数据集中的特征数量

VarianceThreshold 是 scikit-learn 库中的一个特征选择类&#xff0c;它通过移除低方差的特征来减少数据集中的特征数量。这种方法特别适用于删除那些在整个数据集中几乎不变的特征&#xff0c;因为这些特征对于模型的预测能力贡献不大。 参数&#xff1a; threshold&#x…...

git 同步上游仓库到远端仓库

首先知道什么是本地仓库&#xff0c;远端仓库&#xff0c;上游仓库 本地仓库&#xff1a;你从远端仓库克隆到本地 PC 上的仓库 远端仓库&#xff1a;从上游仓库 fork 过来的仓库&#xff0c;可以理解为自己的仓库 上游仓库&#xff1a;公司的仓库&#xff0c;所有权不在于你 当…...

SQL中的时间类型:深入解析与应用

在数据库管理系统中&#xff0c;时间数据的处理是至关重要的一环。无论是记录事务的创建时间、用户的登录时间&#xff0c;还是进行数据分析时的时间序列处理&#xff0c;时间类型都扮演着不可或缺的角色。SQL&#xff08;Structured Query Language&#xff09;作为与数据库交…...

如何用分布式数据库解决慢查询问题

当使用MySQL时&#xff0c;我们不可避免地会遇到许多与慢查询相关的问题。 为了解决这些慢SQL的问题&#xff0c;我们通常需要投入大量的精力去研究执行计划、考虑合适的索引策略、精心改写SQL语句&#xff0c;甚至可能需要调整程序逻辑。然而&#xff0c;针对特定SQL的优化往…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...