如何在 Windows 和 Visual Studio 2015 下构建 v8 动态库

Posted

技术标签:

【中文标题】如何在 Windows 和 Visual Studio 2015 下构建 v8 动态库【英文标题】:How to build v8 dynamic libraries under Windows and Visual Studio 2015 【发布时间】:2016-08-20 12:54:16 【问题描述】:

我已经能够在 Windows 8.1Visual Studio 2015 Update 2 下使用基于 GN Building with GN 的构建链成功构建 v8,但我可以'找不到如何构建 v8 库。基本上我想启用component=shared_library,但我找不到怎么做...

helloworld.exe 等示例正在编译并且正在运行。

这是我到目前为止的构建方式:

set DEPOT_TOOLS_WIN_TOOLCHAIN=0
mkdir depot_tools
cd depot_tools
curl -O https://storage.googleapis.com/chrome-infra/depot_tools.zip
cmake -E tar xf "depot_tools.zip" --format=zip
SET PATH=%CD%;%CD%\python276_bin;%PATH%
cd ..
gclient config https://chromium.googlesource.com/v8/v8
set GYP_MSVS_VERSION=2015
gclient sync
cd v8
python tools/dev/v8gen.py x64.release
ninja -C out.gn/x64.release

我也尝试过使用 gyp 的老式方式,但没有成功(无法编译):

SET DEPOT_TOOLS_WIN_TOOLCHAIN=0
mkdir depot_tools
cd depot_tools
curl -O https://storage.googleapis.com/chrome-infra/depot_tools.zip
cmake -E tar xf "depot_tools.zip" --format=zip
SET PATH=%CD%;%CD%\python276_bin;%PATH%
cd ..
gclient config https://chromium.googlesource.com/v8/v8
set GYP_MSVS_VERSION=2015
set GYP_GENERATORS=ninja
gclient sync
cd v8
python gypfiles\gyp_v8 -Dtarget_arch=x64 -Dcomponent=shared_library
ninja -C out\Release_x64 all

有什么建议吗?

【问题讨论】:

【参考方案1】:

我遇到了同样的问题,解决方法是编辑 gn 参数。

之后:

python tools/dev/v8gen.py x64.release

只需编辑文件 out.gn/x64.release/args.gn 并添加以下行:

is_component_build = true

构建完成后,您应该在 out.gn/x64.release 文件夹中找到一个 v8.dll。

【讨论】:

谢谢。我设法生成了 v8.dll,但现在 Windows 下需要的所有其他静态库都没有生成(v8_libplatform、v8_libbase、...),我必须链接所有 obj 文件。你也解决了这些问题吗? PS: 可以在命令行gn gen --args="is_debug=false is_component_build=true target_cpu=\"x64\"" out.gn/x64.release给gn args 不幸的是,如果你查看文件 out.gn/x64.release/obj/d8.ninja,它是 v8 控制台,你会发现每个目标文件和需要的库,在我的项目中,我只是将所有库和目标文件添加到链接器中,然后使用 v8 脚本引擎运行一个正在运行的程序【参考方案2】:

我是在吉普人中生产的。不,那是“set GYP_GENERATORS = ninja”中的设置,是“GYP_GENERATORS = msvs”中的设置。运行生成的sln文件,但是在构建的时候留下一些错误,构建成功并浏览了互联网。

【讨论】:

谢谢,我通过使用GYP_GENERATORS = msvs 取得了一些进展,但仍然不是所有目标都在链接,尤其不是我想要的(libv8.dll)...视觉正在尝试链接@987654325 @而v8_base.lib实际上是内置的... 30>LINK : fatal error LNK1181: cannot open input file 'Y:\Sources\git.corp.adobe.com\Horizon\build\win64\lib-v8\v8\build\Release\lib\v8_base_0.lib' 41>------ Build started: Project: All, Configuration: Release x64 ------ ========== Build: 21 succeeded, 20 failed, 0 up-to-date, 0 skipped ========== 你不存在libv8.dll文件吗?我也libv8.dll没有。尝试构建时出现错误。但是,可以解决 Internet 搜索问题。如果没有明确的答案,我很抱歉。对于您的错误,请尝试查看此link。

以上是关于如何在 Windows 和 Visual Studio 2015 下构建 v8 动态库的主要内容,如果未能解决你的问题,请参考以下文章

Windows Apache + mod_wsgi 环境配置

VS2019下载

如何创建基于其他数据帧数据帧中的一个连接?

如何使用Visual Studio 2017在Windows窗体应用程序中查看和编辑Visual Basic Power Pack形状?

如何在 Windows 和 Visual Studio 2015 下构建 v8 动态库

如何在 windows 7/visual studio 2008 下为 windows XP 编译