警告提示信息为

warning MSB8012: TargetPath(D:\work\code\xxxx\Debug\xxxx.exe) does not match the Linker's OutputFile property value (c:\ccc\xxxx.exe). 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).

这个问题通常是由于项目的设置引起的

修改 项目属性->常规->输出目录   与 链接器->常规->输出文件 保持一致即可。


重点来了,场景二,如果你要编译生成到指定目录然后(配置输出目录),启动调试,在(DEBUG下)也出现这个警告是因为什么呢?

经本人测试,应该算是vs2013的bug!

在debug中修改了输出目录后,VS2013IDE会去修改 项目.vcxproj 文件,增加输出目录的个性化配置,但是这段配置代码加在了vcxproj文件中的靠末尾部分,程序在编译时并未读取到这个配置信息,解决办法是把这段代码手动的插入到更靠前的部分去,本人将它提到
1   <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
2     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
3   </ImportGroup>
之后,
便成
 1   <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
 2     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
 3   </ImportGroup>
 4   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
 5     <LinkIncremental>true</LinkIncremental>
 6     <OutDir>c:\ccc\</OutDir>
 7   </PropertyGroup>
 8   <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
 9     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
10   </ImportGroup>
再编译就不会出现警告了。
以下是关键配置代码

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <LinkIncremental>true</LinkIncremental>
    <OutDir>c:\ccc\</OutDir>
  </PropertyGroup>