我正在为学校制作一个游戏引擎,我想使用 Google 的 V8 来允许在引擎中编写 JavaScript 脚本。该引擎是使用 Visual Studio 2013 编写的,由于最终游戏不得超过 50MB,因此我希望尽可能减小对 V8 文件大小的影响。
在 Internet 上查找如何使用 V8 进行操作时,我发现了一系列关于 V8 的教程,其中包含 V8 的预编译 .lib 文件。然而,它已经四岁了。我假设自己构建一个更新的版本会提高性能并添加功能,所以我昨天花了所有时间在 V8 构建过程中苦苦挣扎,最终想出了如何为 Visual Studio 编译 V8:
- 安装 Google 的“仓库工具”
- 跑
fetch v8
这为我提供了生成 V8 Visual Studio 解决方案所需的一切,当我编译它时,它可以工作并生成 .lib 和 .dll 文件。但是,当我尝试创建一个测试解决方案并将这些库链接到它时,这令人难以置信的混乱。
构建过程会生成以下 LIB 文件:
- cctest.lib
- gmock.lib
- gtest.lib
- icui18n.lib
- icuuc.lib
- mksnapshot.lib
- 单元测试.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 对文件大小的影响尽可能小。我不需要 i18n 支持,那么有没有办法在没有它的情况下进行编译?就像我上面说的,我有一个旧版本的 V8 .lib,它不需要 DLL 来运行,它编译和工作正常......但我错过了新的功能和改进,因为它是四年老的?无论如何,所有这些 .lib 是什么意思?我找不到任何关于哪些人做了什么或类似事情的文档。
所以是的,我想如果有人可以提供说明或向我指出任何有帮助的文档,那就太好了。我昨天花了几乎一整天的时间来解决这个问题。