【译】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)/。

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

祝你顺利!

相关文章