【译】MSB8027: Two or more files with the name of ***.cpp will produce outputs to the same location.

原文链接:http://www.setoreaustralia.com/msb8027-two-or-more-files-with-the-name-of-texture-cpp-will-produce-outputs-to-the-same-location/

又一个在VC++环境下进展开发工作的“乐趣”。固然看上去没有何能造成问题,但直接移植一些*nix代码从不会周详运行。在移植一个AR系统(spatial
augmented reality
system)时,大家有七个Texture.cpp(一个针对性实际环境纹理,另一个针对虚拟目标纹理)分别放在分化的子目录中,但是VC++编译器却不太喜欢接受那种场馆:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppBuild.targets(942,5): warning MSB8027: Two or more files with the name of Texture.cpp will produce outputs to the same location. This can lead to an incorrect build result.  The files involved are src\geometry\Texture.cpp, src\graphics\Texture.cpp.

次第会一连编译,但最后总能在含蓄错误文件或者访问错误类时发出错误!

事实上这一个已经不是怎么新Bug了,在上边那几个Microsoft
Connect给出的年华线中就有这些题材,并且原本计划是在Visual Studio 2013
Update 1就该获得缓解(我现在在用Update
3然则并没有缓解!):https://connect.microsoft.com/VisualStudio/feedback/details/797460/incorrect-warning-msb8027-reported-for-files-excluded-from-build

缓解格局

VC++编译源文件时默许全体输出(对象文件)到同一个索引下,境遇同名源文件覆盖前面的同名对象文件。为了化解那么些题目,你可以安装输出路径与源文件路径类似。以下操作在Visual
Studio 2013 (Update 3)下适用:

右键项目->属性->配置属性->C/C++->输出文件->对象文件名,将$(IntDir)改为$(IntDir)/%(RelativeDir)/。

安装甘休后,编译阶段输出路径将会把源文件路径考虑进来而不是只考虑源文件名。

祝你顺利!