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

Ada*_*ich 8 v8 embedded-v8 visual-studio-2013

我正在为学校制作游戏引擎,我想使用谷歌的V8来允许在引擎中使用JavaScript脚本.该引擎是使用Visual Studio 2013编写的,并且由于最终游戏不得超过50MB,因此我希望尽可能减小V8文件大小的影响.

通过互联网了解如何使用V8进行操作,我遇到了一系列关于V8的教程,其中包含一个针对V8的预编译.lib文件.但是,它已经四岁了.我假设自己构建一个更新的版本会提高性能并添加功能,所以我昨天花了很多时间来讨论V8构建过程,并最终找到了如何为Visual Studio编译V8:

  1. 安装Google的"软件仓库工具"
  2. fetch v8

这为我提供了生成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

在昨天的某个时刻,我包含了许多库(我认为它是v8,v8_base和v8_snapshot)并将所有DLL复制到我项目的输出目录中,并最终起作用.但是,正如我上面所说,我需要V8的文件大小影响尽可能小.我不需要i18​​n支持,所以有没有一种方法可以在没有它的情况下进行编译?就像我上面说的那样,我有一个旧版本的V8 .lib,它不需要运行DLL,它编译并且工作正常...但我错过了更新的功能和改进,因为这是四年旧?无论如何,所有这些.libs的含义是什么?我找不到任何关于哪些人做什么或类似事情的文件.

所以,是的,我想如果有人能提供指示或指向我任何有用的文件,那将是伟大的.我昨天花了差不多整天试图解决这个问题.

pme*_*med 5

在V8 wiki中有一个使用GYP构建的页面.简而言之,您应该使用GYP生成Visual Studio解决方案,然后构建它.

  1. 安装Python,Subversion客户端; 从命令行使它可用.
  2. 打开Visual Studio命令提示符,在那里执行后续步骤.
  3. 将V8源提取到某个目录中,比如它将命名为v8-build:

    svn checkout http://v8.googlecode.com/svn/trunk v8-build

最新版本(某些标记版本,例如http://v8.googlecode.com/svn/tags/3.28.57)

  1. 在Windows上,你需要Cygwin: svn checkout http://src.chromium.org/svn/trunk/deps/third_party/cygwin@66844 v8-build/third_party/cygwin

(参见v8-build/DEPS文件中的实际URL)

  1. 获取GYP:

    svn checkout http://gyp.googlecode.com/svn/trunk@1831 v8-build/gyp

  2. 可选择获取ICU:

    svn checkout https://src.chromium.org/svn/trunk/deps/third_party/icu46@258359 v8-build/third_party/icu

  3. 在命令行中提供工具:

    • set CYGWIN_ROOT=%cd%\v8-build\third_party\cygwin
    • set PATH=%CYGWIN_ROOT%\bin;%PATH%
    • set PYTHONPATH=%cd%\v8-build\gyp\pylib
    • v8-build\third_party\cygwin\setup_mount.bat
    • v8-build\third_party\cygwin\setup_env.bat
  4. 使用所需选项运行GYP:

    python v8-build\build\gyp_v8 -Dcomponent=static_library -Dtarget_arch=x64 -v8_enable_i18n_support=0 -Dv8_use_snapshot=0

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

  1. 使用Cygwin环境使用Visual Studio构建生成的项目:

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

  2. 结果库应该在v8-build\build目录中

我使用Python脚本自动执行上述步骤.

更新:我使用类似的脚本为V8构建NuGet包,现在就是这样:https://github.com/pmed/v8-nuget/blob/master/build.py