MSBuild不同的结果 - 一个错误,其他成功

时间:2015-02-19 20:47:34

标签: c++ visual-studio msbuild linker precompiled-headers

我在Visual Studio 2013解决方案中有几个Visual C ++项目(.vcxproj)。从干净的代码拉取,一切都在Visual Studio 2013中成功构建,或者以适当的顺序在每个项目上调用MSBuild的构建脚本(旧的,我们正在工作,缓慢但肯定地替换)的遗留物。

我们有一些问题。首先,如果我们首先从构建脚本构建,然后尝试调试,它说大多数项目已经过时了。这很烦人,但我认为这是因为批处理文件没有触及中间目录中与Visual Studio相同的内容。我发现Stack OverflowMicrosoft Connect记录了类似的问题。是否有修改Microsoft.CppBuild.targets文件的替代方法?我想解决此问题并不涉及手动修改所有开发人员的计算机。

主要问题是:如果我们从Visual Studio 2013中构建项目,它将成功构建和链接。但是,如果我们从构建脚本开始构建相同的项目,我们得到:

OtherProject.lib(SomeObject.obj) : error LNK2011: precompiled object not linked in; image may not run [Full path to .vcxproj] 
OutputFile.dll : fatal error LNK1120: 1 unresolved externals [full path to .vcxproj]

有没有人有关于如何找出这个预编译对象的提示以及基于Visual Studio的构建可以解决问题的原因?我是否需要检查每个库依赖项及其每个依赖项?有没有更简单/自动化的方法来做到这一点?需要注意的一点是,Visual Studio 2013并不总是正确,并且会以相同的警告失败。

我们的批处理文件构建命令是:

msbuild /nologo /maxcpucount /clp:NoSummary /p:BuildProjectReferences=false /p:Configuration=Debug /verbosity:normal ProjectDir\Project.vcxproj

0 个答案:

没有答案