我正在尝试将chrome V8嵌入我的C ++项目中,但我只能得到我所称的东西,我的项目已嵌入V8中。我对此唯一担心的是我的程序是跨平台的,并且我希望构建命令是相同的。我开始在Windows上进行开发,但是现在使用Mac来运行V8。
我可以使用此设置来构建V8并运行其示例:
我当前的解决方案有一些命令install
,build
,run
。 build命令更加复杂,因为它试图自动编辑V8中的BUILD.gn
文件以插入项目而不是V8。它将源目录中的所有文件添加到源中。
由于某些原因,这种方法感觉很错误。首先,几乎肯定有比使用python脚本编辑构建脚本更好的配置项目的方法。其次,我希望将V8嵌入到我的项目中,而不是相反。我只有SDL2作为依赖项,但是我拥有跨平台的CMake构建设置,但是V8构建源文件会放弃该设置。我觉得如果添加更多依赖项,这种方法可能会变得难以管理。
我目前正在处理一个带有一个源文件的小型测试项目。
编辑:我在运行示例和API使用之间嵌入V8找不到任何东西
答案 0 :(得分:0)
通常的方法是在构建系统中迈出一步,将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
感觉不对。随着时间的流逝,它也可能变得脆弱且需要大量维护。
答案 1 :(得分:0)
我使用brew可以很容易地用CMake构建V8:
brew install v8
然后将以下行添加到CMakeLists.txt
file(GLOB_RECURSE V8_LIB # just GLOB is probably fine
"/usr/local/opt/v8/lib/*.dylib"
)
include_directories(
YOUR_INCLUDES
/usr/local/opt/v8
/usr/local/opt/v8/include
)
target_link_libraries(YOUR_PROJECT LINK_PUBLIC YOUR_LIBS ${V8_LIB})
致力于Mojave 10.14.1