C++ V8 嵌入项目结构

标签 c++ google-chrome embed v8

我正在尝试将 chrome V8 嵌入到我的 C++ 项目中,但我只能得到我能调用的,我的项目被嵌入到 V8 中。我唯一关心的是我的程序是跨平台的,我希望构建命令相同。我开始在 Windows 上开发它,但我现在使用 Mac 来运行 V8。

我可以使用此设置构建 V8 并运行他们的示例:

我当前的解决方案有几个命令installbuildrun。构建命令更加复杂,因为它试图自动编辑 V8 中的 BUILD.gn 文件以插入您的项目而不是 V8。它会将源目录中的所有文件添加到源。

由于某些原因,这种方法感觉非常错误。首先是几乎肯定有比使用 python 脚本编辑构建脚本更好的方法来配置我的项目。其次,我希望 V8 嵌入到我的项目中,而不是相反。我只有 SDL2 作为依赖项,但我有跨平台 CMake build设置,这将被放弃,因为 V8 构建源文件。我觉得如果添加更多依赖项,这种方式可能会变得难以管理。

我目前正在处理一个只有一个源文件的小型测试项目。

编辑:我在运行示例和 API 使用之间找不到有关嵌入 V8 的任何信息

最佳答案

通常的方法是在构建系统中有一个步骤将 V8 库构建为依赖项(以及您可能拥有的任何其他依赖项)。为此,它应该使用官方的 V8 构建说明。如果您在获取源/依赖项和编译它们的步骤之间进行了拆分,那么获取 depot_tools 和调用 fetch_v8/gclient sync 属于其中。请注意,您可能想要固定一个版本(最新的稳定分支)而不是使用树尖。所以,在伪代码中,你会有类似的东西:

step get_dependencies:
  download/update depot_tools
  download/update V8 @ pinned_revision (using depot_tools)

step compile (depends on "get_dependencies"):
  cd v8; gn args out/...; ninja -C out/...;
  cd sdl; build sdl
  build your own code, linking against V8/sdl/other deps.

许多构建系统已经有了方便的方法来做这些事情。虽然我不太了解 CMake,所以我不能在那里提出任何具体建议。

我同意使用脚本自动修改 BUILD.gn 感觉不对。随着时间的推移,它也可能变得脆弱且需要大量维护。

关于C++ V8 嵌入项目结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53379099/

相关文章:

c++ - 声明 "template auto A::f(int t) -> decltype(t + g())"的目的是什么

C++:为什么 VS2005 中的(模板)类中的运算符放置 new 不被识别为内联友元函数?

css - 在 Wordpress 中嵌入 data-instgrm-version ="8"的 Instagram 帖子;自定义 CSS 不再有效

html - 查看 "Page Source"显示与 cURL 不同的 HTML

objective-c - Swift 代码可以嵌入现有的 Objective-C 文件中吗?还是必须将该代码添加到离散的 Swift 文件中?

javascript - 使用javascript嵌入动态大小的网页

c++ - 函数参数中的硬编码值是常量引用吗?

c++ - 反转数据顺序

javascript - 使用 window.print() 时页面在 Google chrome 中无响应

html - 当 data 属性为无效 url 时,Chrome 不会呈现 <object> 的替代内容