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

我可以使用此设置来构建V8并运行其示例:

  • 获取此:https://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html#_setting_up
  • 获取源:https://v8.dev/docs/source-code
  • 版本:https://v8.dev/docs/build

  • 我当前的解决方案有一些命令installbuildrun。 build命令更加复杂,因为它试图自动编辑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++ - C++ V8嵌入项目结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53379099/

    10-13 08:00