Visual studio 2013 如何为Windows编译尽可能小的V8库?

Visual studio 2013 如何为Windows编译尽可能小的V8库?,visual-studio-2013,v8,embedded-v8,Visual Studio 2013,V8,Embedded V8,我正在为学校制作一个游戏引擎,我想使用Google的V8在引擎中支持JavaScript脚本。该引擎是使用Visual Studio 2013编写的,因为最终游戏的容量不能超过50MB,所以我希望V8文件大小的影响尽可能小 在互联网上查找如何使用V8时,我遇到了一个用于V8的预编译.lib文件。然而,它已经四年了。我假设自己构建一个更新的版本可以提高性能并添加功能,所以我昨天花了一整天的时间在V8构建过程中苦苦挣扎,最终找到了为Visual Studio编译V8的方法: 安装谷歌的 运行fetc

我正在为学校制作一个游戏引擎,我想使用Google的V8在引擎中支持JavaScript脚本。该引擎是使用Visual Studio 2013编写的,因为最终游戏的容量不能超过50MB,所以我希望V8文件大小的影响尽可能小

在互联网上查找如何使用V8时,我遇到了一个用于V8的预编译.lib文件。然而,它已经四年了。我假设自己构建一个更新的版本可以提高性能并添加功能,所以我昨天花了一整天的时间在V8构建过程中苦苦挣扎,最终找到了为Visual Studio编译V8的方法:

  • 安装谷歌的
  • 运行
    fetchv8
  • 这使我获得了生成V8 Visual Studio解决方案所需的一切,当我编译它时,它可以工作,并生成.lib和.dll文件。然而,当我试图创建一个测试解决方案并将这些库链接到它时,它令人难以置信地困惑

    生成过程生成以下LIB文件:

    • cctest.lib
    • gmock.lib
    • gtest.lib
    • icui18n.lib
    • icuuc.lib
    • mksnapshot.lib
    • unittest.lib
    • v8.lib
    • v8_base.lib
    • v8_libbase.lib
    • v8_libplatform.lib
    • v8_nosnapshot.lib
    • v8_snapshot.lib
    以及以下DLL:

    • icudt.dll
    • icui18n.dll
    • icuuc.dll
    • v8.dll
    在昨天的某个时候,我包括了许多lib(我认为是v8、v8_-base和v8_-snapshot),并将所有dll复制到我的项目的输出目录中,最终成功了。然而,正如我上面所说的,我需要V8对文件大小的影响尽可能小。我不需要i18n支持,那么有没有一种不用i18n的编译方法呢?就像我上面所说的,我有一个旧版本的V8.lib,它不需要DLL来运行,而且编译和工作都很好。。。但我是否错过了新的功能和改进,因为它已经四年了?不管怎样,所有这些LIB意味着什么?我找不到任何关于哪些人做了什么或类似的事情的文档

    所以,是的,我想如果有人能给我提供指导,或者向我指出任何有帮助的文档,那就太好了。昨天我几乎花了一整天的时间试图解决这个问题。

    v8wiki中有一个页面。简而言之,您应该使用GYP生成VisualStudio解决方案,然后构建它

  • 安装Python、Subversion客户端;通过命令行使其可用
  • 打开VisualStudio命令提示符,在那里执行下一步
  • 将V8源代码提取到某个目录中,并将其命名为V8 build:

    svn签出http://v8.googlecode.com/svn/trunk v8版本

  • 对于最新版本(例如,某些标记的版本)

  • 在Windows上,您需要Cygwin:
    svn签出http://src.chromium.org/svn/trunk/deps/third_party/cygwin@66844 v8版本/第三方/cygwin
  • (请参见v8构建/DEPS文件中的实际URL)

  • 获取GYP:

    svn签出http://gyp.googlecode.com/svn/trunk@1831 v8版本/gyp

  • (可选)获取ICU:

    svn签出https://src.chromium.org/svn/trunk/deps/third_party/icu46@258359 v8构建/第三方/icu

  • 使工具在命令行中可用:

    • set CYGWIN\u ROOT=%cd%\v8 build\third\u party\CYGWIN
    • 设置路径=%CYGWIN\u ROOT%\bin;%路径%
    • set PYTHONPATH=%cd%\v8 build\gyp\pylib
    • v8 build\third\u party\cygwin\setup\u mount.bat
    • v8构建\第三方\cygwin\setup\u env.bat
  • 使用所需选项运行GYP:

    pythonv8 build\build\gyp\uv8-Dcomponent=static\u library-Dtarget\u arch=x64-v8\u enable\u i18n\u support=0-Dv8\u use\u snapshot=0

  • (请参阅v8 build\build\features.gypi中允许的变量)

  • 使用Cygwin环境使用Visual Studio生成生成的项目:

    msbuild/m/p:useev=true/p:Configuration=Release/p:Platform=x64 v8 build\tools\gyp\v8.vcxproj

  • 结果库应位于
    v8build\build
    目录中

  • 我使用Python脚本来自动化上述步骤


    更新:我使用类似的脚本为V8构建NuGet软件包,以下是:

    我知道这篇文章很老,但我将改进pmed的答案。我假设您已经在windows机器上安装了Python(只需从官方页面安装它,并将Python根目录添加到PATH变量中)以及Git Bash。我将使用“~/”表示您的用户目录

    编译V8最简单的方法是使用depot工具,只需创建一个目录,比如~/devtools/google,使用git bash运行

    cd ~/devtools/google
    git clone git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
    
    然后将~/devtools/google/depot_工具添加到PATH变量中

    使用powershell运行

    cd ~/devtools/google
    fetch v8
    
    这将克隆V8引擎及其所有依赖项gyp、cygwin等的文件

    此时,您可以按照pmed在步骤7中的回答,只需更改环境变量的目录:

    我使用安装路径\v8\来表示~/devtools/google/v8

    CYGWIN_ROOT=Path-to-your-installation\v8\third_party\cygwin
    PATH=%CYGWIN_ROOT%\bin;%PATH%
    PYTHONPATH=Path-to-your-installation\v8\build\gyp\pylib
    
    然后运行(在PowerShell中) 安装路径\v8\build\third\u party\cygwin\setup\u mount.bat 安装路径\v8\build\third\u party\cygwin\setup\u env.bat

    visual studio项目将位于 安装路径\v8\tools\gyp*

    您可以使用VisualStudio打开v8项目并进行编译

    我费了好大劲才弄明白为什么在Git bash中“fetch v8”会以某种方式失败,显然,您必须使用PowerShell(可能也是经典的cmd?)

    PS:如果您在编译时遇到问题(无法重新映射[…]cygncurses-8.dll),请看这篇文章


    注意。

    可以在不支持i18n的情况下编译V8,以便进行测试