在Windows上编译v8时出错

在Windows上编译v8时出错,windows,v8,Windows,V8,下面我将编译嵌入v8的示例程序。我能够在Debian中完成它,没有任何问题。在Windows上构建v8时遇到编译错误 我获得了v8源代码,并尝试编译最新的主版本和refs/tags/9.1.193,因为教程中建议的refs/tags/7.1.11需要VS 2017,我有2019。此外,我需要的是v8的最新版本,而不是旧版本 运行gn args out.gn/x64.release.sample,我看到args文件包含以下内容: is\u component\u build=false 是_deb

下面我将编译嵌入v8的示例程序。我能够在Debian中完成它,没有任何问题。在Windows上构建v8时遇到编译错误

我获得了v8源代码,并尝试编译最新的主版本和
refs/tags/9.1.193
,因为教程中建议的
refs/tags/7.1.11
需要VS 2017,我有2019。此外,我需要的是v8的最新版本,而不是旧版本

运行
gn args out.gn/x64.release.sample
,我看到args文件包含以下内容:

is\u component\u build=false
是_debug=false吗
目标_cpu=“x64”
使用_custom_libcxx=false
v8_=真
v8\u使用\u外部\u启动\u数据=错误
本教程的第4步是运行
ninja-C out.gn/x64.release.sample v8_monolith
,由于没有编译器/调试框架的
obj/v8_base_.obj
、没有编译器/调试评估的
obj/v8_base_.obj
和没有编译器/调试覆盖的
obj/v8_base_.obj
中的3个类似编译错误而失败

这是输出的一部分:

失败:obj/v8_base_没有编译器/debug-coverage.obj
...
在.././src/debug/debug coverage.cc:11中包含的文件中:
../..\src/deoptimizer/deoptimizer.h(108,38):错误:非标准布局类型“v8::internal::deoptimizer”上的偏移量[-Werror,-Winvalid offsetof]
static int input_offset(){return offsetof(Deoptimizer,input_u);}
^                     ~~~~~~
..\..\第三方\llvm build\Release+Asserts\lib\clang\13.0.0\include\stddef.h(104,24):注意:从宏“offsetof”展开
#定义偏移量(t,d)\内置偏移量(t,d)
^                     ~
在.././src/debug/debug coverage.cc:11中包含的文件中:
../..\src/deoptimizer/deoptimizer.h(110,12):错误:非标准布局类型“v8::internal::deoptimizer”上的偏移量[-Werror,-Winvalid offsetof]
返回偏移量(去优化器、输出计数);
^                     ~~~~~~~~~~~~~
..\..\第三方\llvm build\Release+Asserts\lib\clang\13.0.0\include\stddef.h(104,24):注意:从宏“offsetof”展开
#定义偏移量(t,d)\内置偏移量(t,d)
^                     ~
在.././src/debug/debug coverage.cc:11中包含的文件中:
../..\src/deoptimizer/deoptimizer.h(112,39):错误:非标准布局类型“v8::internal::deoptimizer”上的偏移量[-Werror,-Winvalid offsetof]
static int output_offset(){return offsetof(Deoptimizer,output_u);}
^                     ~~~~~~~
..\..\第三方\llvm build\Release+Asserts\lib\clang\13.0.0\include\stddef.h(104,24):注意:从宏“offsetof”展开
#定义偏移量(t,d)\内置偏移量(t,d)
^                     ~
在.././src/debug/debug coverage.cc:11中包含的文件中:
../..\src/deoptimizer/deoptimizer.h(115,12):错误:非标准布局类型“v8::internal::deoptimizer”上的偏移量[-Werror,-Winvalid offsetof]
返回偏移量(去优化器、调用者\帧\顶部);
^                     ~~~~~~~~~~~~~~~~~
..\..\第三方\llvm build\Release+Asserts\lib\clang\13.0.0\include\stddef.h(104,24):注意:从宏“offsetof”展开
#定义偏移量(t,d)\内置偏移量(t,d)
^                     ~
产生了4个错误。
[882/1736]CXX obj/torque生成的初始值设定项/test-torque-tq-csa.obj
忍者:构建停止:子命令失败。
没有编译器/debug-frames.obj的obj/v8_base_、没有编译器/debug-evaluate.obj的obj/v8_base_上的类似错误

有没有办法更改配置以便在Windows上编译v8?

是的,禁用消息中提到的错误:
-Winvalid offsetof

我认为这不是最好的解决方案,因为我认为该警告非常重要。如果不是担心的话,v8开发人员会专门为该文件关闭它。我在BUILD.gn中添加了标志
-w
,以关闭所有警告,编译了库,并且能够使hello world示例正常工作。正确的解决方案是不涉及更改内部设置的东西。我认为更新源代码而不这样做会麻烦得多。为什么它不是标准的布局类型?