我正在尝试使用官方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中打开解决方案文件,它看起来像这样:
我可以在VS中构建v8
,v8_libbase
和v8_libplatform
。
答案 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