如何修复 Visual C++ 2010 中静态库项目中的警告 MSB8012?

2024-04-20

我正在尝试将静态库从 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 ==========

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何修复 Visual C++ 2010 中静态库项目中的警告 MSB8012? 的相关文章

随机推荐