本文主要是介绍如何在Windows上构建V8而不发疯,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
“打造V8并不是为了胆小” –互联网上的某人
有时我想知道我对JavaScript知识的无限渴望会导致我走向何方。 这次,我决定学习浏览器和Node如何使用V8,以及每天使用的API来自何处。 因此,我着手研究V8和两个最受欢迎的托管环境之间的集成。
我的计划是构建一个嵌入V8的简单应用程序。 而且由于没有多少Web开发人员知道事件循环不是由V8实现的,而是由托管环境实现的,因此我想在我的应用程序中对此进行演示。 我也希望一路了解V8的内部运作方式。
但是首先我必须从源代码构建V8并将其嵌入到简单的HelloWorld应用程序中。 事实证明,这项任务不适合胆小的人。 我花了一个星期的时间来搜索和学习有关C ++和python的许多知识。 我不得不问四个关于stackoverflow的问题。 我将保留它们,这是我建造该产品所需的其余工作。
由于构建和嵌入都不是无关紧要的,因此本文由两部分组成。 第一个展示了如何从Windows计算机上的源代码构建V8。 第二部分介绍了将其插入应用程序所需的条件。 当前V8只能在x64计算机上构建,因此请确保您在Windows x64版本上构建。
请推荐这篇文章💚,以便其他人知道有更简单的方法来构建V8。 我真的希望这篇文章可以使一些好奇的人省去很多麻烦。
搭建环境
此处提供了有关如何构建V8的说明,但不幸的是,它们假定您已经具有工作环境,并且省略了许多详细信息。 但是这些细节正是构建V8棘手的原因。
V8使用了Chromium项目工具链的一部分,因此这里找到的一些信息对我也有帮助。 请注意,您无需获取和构建Chromium源即可构建V8。 仅需要一部分工具链,例如depot_tools。
吉特
V8使用GIT作为VCS,因此请下载并安装它。
VS 2015
在Windows上构建V8需要Visual Studio附带的构建工具。 自2016年12月8日起,Chromium需要带有14393 Windows SDK的Visual Studio 2015 Update 3。 因此,继续并在此处下载带有Update 3的Visual Studio Community 2015的安装程序。 此页面需要会员资格,但是它是免费的,因此这里无后顾之忧。 现在运行安装程序,并确保选择以下内容:
安装完成后,请检查安装程序是否已将调试接口访问(DIA)SDK和vcvarsall.bat安装到以下目录:
- …\ Microsoft Visual Studio 14.0 \ DIA SDK
- …\ Microsoft Visual Studio 14.0 \ VC \ vcvarsall.bat
由于某些原因,这些在安装后可能会丢失。 如果是这样,您将必须弄清楚原因以及安装它们的方式。 否则,您将无法构建。 就我而言,它正确地安装在一台机器上而另一台机器上却没有。
Windows SDK
由于Chromium使用的Debugging Tools For Windows并未作为VS安装的一部分安装,因此您还需要单独安装Windows SDK。 在此处下载安装程序并进行安装。 确保已在安装程序中选择了软件包:
仓库工具
下载 depot_tools捆绑包并将其解压缩到某处。
警告: 请勿使用资源管理器中的拖放粘贴或复制粘贴粘贴,这不会提取隐藏的“ .git”文件夹,这对于depot_tools自动更新本身是必需的。 但是,您可以从上下文菜单中使用“全部提取...”。
环境变量
将depot_tools添加到PATH的开头。 许多构建python脚本是针对低于3.x的Python版本编写的,因此请确保它在任何Python安装之前都领先。 假设您将软件包解压缩到E:\ V8 \ depot_tools更新路径,如下所示:
我还建议将其添加到系统变量PATH中,而不是用户变量中。 PATH是从系统路径构造的,可以在“系统”对话框的“系统环境变量”字段中查看。 用户路径被附加到系统路径。 这意味着,如果您将路径添加到User变量,并且从系统路径中找到其他Python安装,则会遇到问题。
您还需要指定两个环境变量:
- DEPOT_TOOLS_WIN_TOOLCHAIN = 0
- GYP_MSVS_VERSION = 2015
更新软件仓库工具
从cmd.exe Shell运行命令gclient(不带参数)。 首次运行时,gclient将安装使用该代码所需的所有Windows特定位,包括msysgit和python。
- 如果从非cmd外壳程序(例如cygwin,PowerShell)运行gclient,则它似乎可以正常运行,但是msysgit,python和其他工具可能无法正确安装。
- 如果在首次运行gclient时看到文件系统奇怪的错误,则可能要禁用Windows Indexing 。
运行gclient后,打开命令提示符并在其中键入python,并确认depot_tools python.bat位于python.exe的任何副本之前。
获取源代码
进入要将V8源下载到的目录,并在终端/外壳中执行以下操作:
fetch v8 cd v8
V8号楼
现在我们已经准备好环境,可以构建V8了。 所有命令都应使用V8源目录中的Windows Command Shell执行。 我们将在构建过程中执行python脚本,并且需要确保使用build_tools中的python可执行文件。 问题是Windows可以将python文件与PC上安装的其他版本的python相关联,因此请始终以以下语法执行命令:
python path/to/script params
不是这个
path/to/script params
通过执行以下操作开始下载所有构建依赖项:
gclient sync
然后通过运行以下命令生成必要的构建文件:
python tools/dev/v8gen.py x64.release
要将V8嵌入到我们的应用程序中,我们需要将其构建为静态库。 为此,我们需要修改默认的构建配置,并将这两个标志添加到args.gn文件中:
is_component_build = false v8_static_library = true
运行以下命令以在编辑器中打开文件.. \ out.gn \ x64.release \ args.gn:
gn out.gn\x64.release
添加这些行,使结果文件如下所示:
is_debug = false target_cpu = “x64” is_component_build = false v8_static_library = true
最后一件事是通过执行以下命令来编译源代码:
ninja -C out.gn/x64.release
运行测试以验证所有内容均正确构建:
tools/run-tests.py --gn
建立结果
构建生成带有许多静态库文件 (* .lib)的.. \ v8source \ out.gn \ x64.release \ obj文件夹:v8_base.lib,v8_libbase.lib等。将v8嵌入到我们的应用程序中时,将使用这些文件。
将V8嵌入到自定义应用程序中
事实证明,斗争并没有以成功的建立而告终。 尝试嵌入V8并构建示例Hello world应用程序时,我也跳过了多个步骤。 该手册非常简短,适用于基于Linux的系统,并且缺少许多重要的细节。
我们将V8嵌入到一个简单的控制台应用程序中。 按照此处 (不要选中Empty project)或此处所述的说明创建应用程序。 这将创建Win32应用程序,但是V8是为x64体系结构构建的,因此我们需要对项目进行一些修改。 为此,请转到项目属性并选择x64活动解决方案平台:
另外,默认情况下,V8是在发布模式下构建的。 为了避免这样的失配误差这样 ,我们需要设置该项目,以发布配置:
另外,我们需要使应用程序使用运行库的多线程静态版本:
配置包含和库目录
接下来,我们需要添加文件夹以查找包含目录的 V8头文件:
并将带有V8静态库文件的文件夹添加到库目录 :
该页面很好地总结了所有类型的目录。
撰写HelloWorld cpp文件
现在,从此处将HelloWorld示例复制到您的主cpp文件,并将stdafx作为文件中的头顶包含文件:
#include “stdafx.h”
链接静态库
我们快完成了。 如前所述,V8本身由.. \ v8source \ out.gn \ x64.release \ obj目录中的静态库文件组成。 现在我们需要链接这些库。 为此,将以下内容添加到您的代码中:
#pragma comment(lib, "v8_base.lib") #pragma comment(lib, "v8_libbase") #pragma comment(lib, "v8_external_snapshot") #pragma comment(lib, "v8_libplatform") #pragma comment(lib, "v8_libsampler") #pragma comment(lib, "icuuc.lib") #pragma comment(lib, "icui18n.lib") #pragma comment(lib, "inspector")
并链接V8库所需的Windows相关库:
#pragma comment(lib, "winmm.lib") #pragma comment(lib, "dbghelp.lib") #pragma comment(lib, "shlwapi.lib")
编译应用
现在终于可以开始构建了。 转到Build-> Build solution或按Ctrl + Shift + B。 这将生成一个可执行文件到以下位置:
..\project-folder\x64\Release\project-name.exe
还有一些
V8需要两个位于…\ v8-source \ out.gn \ x64.release中的文件才能启动:
- snapshot_blob.bin
- natives_blob.bin
将它们复制到可执行文件所在的位置。 而已。 现在,您可以从命令行运行可执行文件,它应该输出“ Hello World”。
您发现文章中的信息有帮助吗?
From: https://hackernoon.com/how-to-build-v8-on-windows-and-not-go-mad-6347c69aacd4
这篇关于如何在Windows上构建V8而不发疯的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!