【问题标题】:Is it possible to build Google V8 engine using Microsoft VC++ compiler?是否可以使用 Microsoft VC++ 编译器构建 Google V8 引擎?
【发布时间】:2018-12-04 13:19:25
【问题描述】:

前段时间,我使用 V8 开发人员的说明如何使用他们的旧元构建系统 GYP 和 Microsoft VC++ 编译器(来自 Visual Studio)来构建 V8。非常简单:使用 GYP 生成 .sln 文件,使用 Microsoft VC++ 编译器构建它。不幸的是,该指令不再可用,因为 Google 切换到另一个元构建系统(称为 GN)并放弃了 GYP。

这不是一个真正的问题,因为 GN 也可以创建 sln 文件 - 但据我了解,它们不再支持 Microsoft 编译器。他们发布并使用 clang 在 Windows 上构建 V8(即使您从 Visual Studio 构建它)。

所以,我的问题是:当前的 V8 代码主干是否可以创建 sln 文件,该文件可以在 Visual Studio(比如说 2017 年)中打开并且可以使用 Microsoft C++ 编译器构建?

【问题讨论】:

    标签: v8 embedded-v8


    【解决方案1】:

    这是三个独立的问题: (1) 是否可以使用 GN 生成 .sln 文件以在 Visual Studio 中打开? (2) 可以用MSVC编译器编译V8吗? (3) 是否可以在 Visual Studio 中构建 V8?

    (1) 是的。简而言之,运行gn gen --ide=vs。见https://www.chromium.org/developers/gn-build-configuration

    (2) 是的。将is_clang = false 放入您的args.gn(可通过运行gn args out\my_build_folder 进行编辑),然后像往常一样使用ninja 编译。这是不断测试的,因此可以保证继续工作(只要 V8 正式支持 MSVC 编译器)。

    (3) 我不这么认为。您可以尝试使用生成的 .sln,但构建过程相当复杂(构建一个工具的几个阶段,然后运行它以生成下一步使用的输出),我认为 .sln 主要包含文件列表,但没有关于如何编译它们的具体说明。

    【讨论】:

    • (1) 实际上不是一个问题,因为我在上面的文字中提到它绝对是可能的。但是(2)正是我想知道的,谢谢。并且 (3) 并不是很重要,因为就使用 MSVC 构建是可能的 - 它是从 UI 还是从命令行完成并不重要。再次感谢您提供的“is_clang = false”选项,我会试试的!
    • 好的,我试过了,它成功了!两者都从命令行编译 (2) 并使用 Visual Studio (3) 编译。最后一个有效,因为 GN 生成非常特殊的 *.vcxproj 文件,其中每个 *.cc 文件都有如何使用 ninja 构建它的说明。所以甚至可以在 VS 中编辑代码并在 VS 中重建它。我会将此答案标记为正确,因为“is_clang = false”是解决方案的真正关键。
    猜你喜欢
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 1970-01-01
    • 2015-11-06
    相关资源
    最近更新 更多