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

时间:2015-08-18 17:01:22

标签: visual-studio-2013 compiler-errors v8 arangodb msbuild-target

我正在尝试使用官方ArangoDB并跟随官方build scripts建立V8作为Windows build instructions的一部分。

所有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中打开解决方案文件,它看起来像这样:

All.sln

我可以在VS中构建v8v8_libbasev8_libplatform

  • Windows 7 64位
  • Visual Studio 2013 Ultimate
  • Cygwin 2.2.0
  • cmake 3.3.1

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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和this post帮助我解决了很多问题,谢谢!

答案 2 :(得分:1)

在VS2013中使用

msbuild All.sln /p:Project=v8;Configuration=Release;Platform=x64