将整个解决方案目录从一个文件夹复制到另一个文件夹并进行零更改后,在构建过程中遇到了一个烦人的错误。
每次构建时,即使未更改任何文件,也会重新编译每个cpp文件。在构建了几次之后,新的解决方案文件夹中没有进行任何更改,这种情况仍然会继续发生。
增加工具> 选项> 项目和解决方案> 构建并运行> MSBuild项目将输出详细信息构建为Detailed
会显示错误:
------最新检查:项目:项目,配置:x64版本------
项目不是最新的:缺少构建输入'd:\ projects \ project \ project \ stdafx.cpp'。
现在,没有stdafx.cpp
,并且stdafx.obj
在发行文件夹中。它也与此文件没有任何关系。如果我确实不需要删除stdafx.cpp
,则丢失的文件投诉只会移至编译列表中的下一个文件(在我的情况下为glad.c
。)
原始解决方案文件夹没有此错误。您还有其他需要吗?我是使用Linux的长期Linux开发人员(emacs / make / cmake / g ++ / gdb / git等是我选择的环境)。
答案 0 :(得分:1)
我是使用Linux的长期Linux开发人员(emacs / make / cmake / g ++ / gdb / git等是我选择的环境)。
然后,如果您像我一样,则可能正在处理某种文件系统混合问题,其中大小写敏感/大小写不敏感的问题困扰着您。
我遇到了这个问题,因为我启用了case sensitivity support,该功能在您安装Windows Subsystem for Linux时可用。但是我敢肯定,使用各种虚拟化方案并挂载外部文件系统的其他人会遇到“保留大小写但不区分大小写”的情况。
我收集到的是,在进行规范化过程中,MSBuild将文件路径转换为所有小写形式(包括解析相对路径)以进行计算。因此,即使.vcxproj中的所有大小写正确,它也会在嗅探可用性路径之前将其丢弃。它可能会破坏路径并一次请求一个目录,否则可能会导致它报告缺少文件,而该文件只是通过shell中的“ dir”请求完整路径而不会公开。 / p>
无论如何,禁用路径中某个文件夹的区分大小写开关(该特定文件夹的名称具有大写字母)使问题消失了。
将整个解决方案目录从一个文件夹复制到另一个文件夹并进行零更改后,在构建过程中遇到了一个烦人的错误。
...这表明很可能是区分大小写的问题。