vs2010中,MSBuild與C++編譯器無(wú)縫整合.無(wú)論使用vs2010生成的代碼,還是轉(zhuǎn)換vs2008或者是更低版本vs編譯的C++代碼.都會(huì)在工程編譯后,都會(huì)提示一條錯(cuò)誤:
C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(935,5): warning MSB8012: TargetPath(c:\users\kalmbach\documents\visual studio 2010\Projects\CPP_DLL2\..\bin\CPP_DLL2d.dll) does not match the Linker's OutputFile property value (c:\users\kalmbach\documents\visual studio 2010\Projects\bin\CPP_DLL2d.dll). 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 %(Link.OutputFile).
于是Google一下, 結(jié)果在這里發(fā)現(xiàn)了大家都發(fā)現(xiàn)同樣的問(wèn)題
我這里的編譯習(xí)慣是這樣的, 調(diào)試版無(wú)論dll, lib還是exe,都在工程名后加d加擴(kuò)展名組成最后的名稱,例如
cored.lib engined.lib , Release版本沒(méi)有d
因此,為了避免這個(gè)warning,只用將調(diào)試版的General節(jié)點(diǎn)上Target Name的值改為$(ProjectName)d
而有些工程的Librarian或者Link分支的Output File的值在轉(zhuǎn)換升級(jí)的過(guò)程中會(huì)被修改. 同樣可以統(tǒng)一修改為vs2010的風(fēng)格$(OutDir)$(TargetName)$(TargetExt)