2

我正在尝试使用官方构建脚本并遵循官方Windows 构建说明将 V8 构建为ArangoDB的一部分。

所有 v8* 目标 ( v8-build.bat) 的编译都失败:

msbuild All.sln /t:v8 /p:Configuration=Release /p:Platform=x64
msbuild All.sln /t:v8_libbase /p:Configuration=Release /p:Platform=x64
msbuild All.sln /t:v8_libplatform /p:Configuration=Release /p:Platform=x64

错误 MSB4057:项目中不存在目标“v8”。

如果我在 Visual Studio 中打开解决方案文件,它看起来像这样:

全部.sln

我可以构建v8v8_libbase并且v8_libplatform在 VS 中很好。

  • 视窗 7 64 位
  • Visual Studio 2013 终极版
  • 赛格温 2.2.0
  • cmake 3.3.1
4

3 回答 3

9

你可以跑

set MSBuildEmitSolution=1
msbuild All.sln /t:v8

然后在生成的文件中搜索您要构建的所有项目All.sln.metaproj的确切目标名称 ( )。可以有一个像. 之后,您可以构建项目<Target Name="">v8_tools_\_gyp_\v8

msbuild All.sln /t:"_tools_\_gyp_\v8" /p:Configuration=Release /p:Platform=x64
于 2016-03-03T20:25:07.907 回答
2

如果目标/项目位于解决方案文件夹中,则指定目标/项目的正确方法是:

msbuild all.sln /t:PATH\TO\PROJECT

但万一它根本不可能,因为(tools)无法处理目标参数中的括号。(gyp)msbuild/t

因此,要么删除( )并指定类似的路径tools\gyp\v8,要么完全删除解决方案文件夹。如果解决方案是平坦的,/t:v8将起作用。

不幸的是,用括号包裹文件夹名称以及生成非平面 .sln 都在 gyp 中进行了硬编码,从而生成了我的all.sln. 没有控制是否创建解决方案文件夹的开关。如果已知 Visual Studio 的目标版本支持这种嵌套,它将创建它们。

解决方法:在 gyp 中强制生成平面解决方案,请参阅
https://github.com/arangodb/arangodb/commit/796d2d263db6271142d954c8c99b9dec0fbe75e9

向 Microsoft/msbuild 和 Google/gyp 报告错误:

@dothebart,这篇文章帮助我解决了很多问题,谢谢!

于 2015-08-19T20:05:10.467 回答
1

在 VS2013 中使用

msbuild All.sln /p:Project=v8;Configuration=Release;Platform=x64
于 2015-10-18T17:14:30.127 回答