我正在尝试将静态库从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 ==========
答案 0 :(得分:23)
构建系统在VS2010中进行了大幅改进,它现在使用MSBuild而不是自定义VCBuild系统。 VS支持的其他语言使用的相同构建系统。他们做了很好的隐形工作,老项目通常很好。但是在导入旧项目时,有一些地方可能会遇到麻烦。这是警告所说的。
使用链接器的General + Output File设置来命名输出文件就是这样一个问题。实际上并不确定会出现什么问题,它可能与依赖性检查有关。它的默认设置是$(OutDir)$(TargetName)$(TargetExt)。因此,重命名输出文件的最佳方法是更改$(TargetName)宏值。
主要常规页面上提供了“目标名称”设置。它在早期的VS版本中不存在。所以将那个改为“itk32d”。或者更好,$(ProjectName)d。并重置链接器设置。
答案 1 :(得分:0)
我遇到了这个问题但是在SO中找不到有效的答案,最终我发现它是通过将中间目录从“。\ Debug”修复为“.. \ Debug来解决的在每个构建配置中,“和”。\“释放”到“.. \ Release”。
对不起,这只是值得评论,但我没有足够的积分来为其他人的帖子添加评论。
答案 2 :(得分:-1)
遇到了类似的问题,但我能够解决使用以前版本的约定更改$(ConfigurationName)参数到$(配置)..我不会想象这样的事情,但当我检查是这种情况时,命名约定是改变和重新代表主要是工作,但在少数事情,它没有完全解释,这是原因..