是否可以使用 Microsoft VC++ 编译器构建 Google V8 引擎?

Is it possible to build Google V8 engine using Microsoft VC++ compiler?

前段时间,我使用了 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++ 编译器构建?

这是三个独立的问题:(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(可由 运行ning gn args out\my_build_folder 编辑),然后照常使用 ninja 进行编译。这是不断测试的,所以它保证继续工作(只要 V8 正式支持 MSVC 编译器)。

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