14

我正在尝试将静态库从 VC++2008 转换为 VC++2010,并且收到有关 TargetPath 和 TargetName 的警告。我查看了我的配置,但不知道如何让这些消失。对于我通常构建一次并且很少重建的静态库,它是严重的还是真的只是一个可忽略的警告。

我认为这与项目名为itk32的事实有关,但是库的调试版本名为itk32d.lib,并且在Visual C++ 6.0时代的旧配置方式导致了某种怪异设置保留在 vc2010 项目中,该项目前段时间从 VC6 转换为 2008,我现在正在转换为 2010:

1>------ Build started: Project: Itk32, Configuration: Debug Win32 ------
1>...\Microsoft.CppBuild.targets(1151,5): warning MSB8012: TargetPath(C:\...\Libraries\Itk\.\Debug\Itk32d.lib.lib) does not match the Library's OutputFile property value (C:\...\Libraries\Itk\Debug\Itk32d.lib). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Lib.OutputFile).
1>...\Microsoft.CppBuild.targets(1153,5): warning MSB8012: TargetName(Itk32d.lib) does not match the Library's OutputFile property value (Itk32d). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Lib.OutputFile).
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
4

3 回答 3

23

构建系统在 VS2010 中进行了大修,现在它使用 MSBuild 而不是自定义的 VCBuild 系统。VS 支持的其他语言使用的相同构建系统。他们做得很好,使那些不可见的旧项目通常可以正常构建。但是,当您导入旧项目时,有些地方可能会遇到麻烦。这就是这个警告的意思。

使用链接器的 General + Output File 设置来命名输出文件就是这样的麻烦之一。实际上并不确定会出现什么问题,它可能与依赖检查有关。它的默认设置是 $(OutDir)$(TargetName)$(TargetExt)。因此,重命名输出文件的最佳方法是更改​​ $(TargetName) 宏值。

在“目标名称”设置的“常规”主页上可用。它在早期的 VS 版本中不存在。因此,将其更改为“itk32d”。或者更好的是,$(ProjectName)d。并重置链接器设置。

于 2013-06-01T20:02:23.410 回答
1

我遇到了这个问题,但在 SO 中找不到有效的答案,最终我发现它是通过将中间目录从“.\Debug”修复为“..\Debug”,并将“.\Release”修复为“ ..\Release”在每个构建配置中。

很抱歉,这仅值得发表评论,但我没有足够的积分来向其他人的帖子添加评论。

于 2016-03-09T22:15:58.053 回答
-1

遇到过类似的问题,但我能够使用以前版本的约定将参数的 $(ConfigurationName) 更改为 $(Configuration).. 我不会想象这样的事情,但是当我检查是这种情况时,命名约定发生了变化重新解释主要是有效的,但很少有事情没有完全解释,这就是原因..

于 2016-09-15T21:42:41.063 回答