当前位置:  开发笔记 > 编程语言 > 正文

项目已损坏?:.cpp在编辑相关头文件后不会自动重新编译

如何解决《项目已损坏?:.cpp在编辑相关头文件后不会自动重新编译》经验,为你挑选了0个好方法。

为简单起见,我有一个项目,该项目的类/文件可以分为两组BC.
C通常取决于(#include)一些B.
让我们说C1,C2......并C5依赖B1于此,没有什么特别之处: -

B1.h

class B1{/** some code */}; 

B1.cpp

#include "B1.h"
/** some code  */

C1.h

class C1{/** some code  */};

C1.cpp

#include "C1.h"
#include "B1.h"
/** some code  */

C2.h

class C2{/** some code  */};

C2.cpp

#include "C2.h"
#include "B1.h"
/** some code  */

问题

当我修改B1.h,并按F5,都C1.cppC2.cpp应重新编译.
但在我的情况下,它不是 - VS仅重新编译C1.cpp.

我必须重建整个项目以间接强制C2.cpp重新编译,否则会出现此错误: -

在d:...\B1.h中找到了B1.h的副本,但是当前的源代码与d:...\B1.h中内置的版本不同.

注意:两个位置d:\...\B1.h完全相同.

经过数月的编码,这个问题昨天发生在我身上.在详尽的错误搜索之后
,问题只发生在这个特定的文件(B1.h)上.
其他Bi都可以.

我试过了什么

(类似于这个问题的答案)

删除bin文件夹中的所有内容(包括调试和发布) - #X文件夹(见下文)

清洁项目和重建(这只是一次性治疗.)

重构(自动重命名)B1到其他东西(也是文件名)

删除文件,创建一个新文件B1.h,然后从旧文件中复制源代码B1.h.

多次重启我的电脑

删除Visual Studio的Temp文件夹中的所有内容(%Temp%)

删除所有.suo,.user,.ncb,.sbr,.log,.sdf,.pdb有关我的项目

确认C2.cppdate modified时间和系统时间是正确的.

(编辑),确保stdafx.h不包括这是我的项目,如的一部分的任何文件B,C包括和其他人BC直接(中).

(编辑)除项目设置外,确保stdafx.h没有#include任何文件的-ed.
感谢 Ari0nhh,user975989TripeHound.

(编辑)确保完全重建时,C2.cpp确实包括B1.h(查看show include控制台).

(编辑)修复VS2015无济于事.

(编辑)卸载大多数VS2015扩展程序没有帮助.

线索1

如果我修改C2.cpp(例如添加空格字符),则保存并构建,C2.cpp链接B1.h.

现在,如果我编辑B1.h并按下F5,C2.cpp现在将自动重新编译(正确).
这不是一种治疗方法,因为我还有许多其他C2想要联系的方法B1.h.
......这是非常可疑的
...在我改变了一些项目设置(不确定哪个)后,C2.cpp再也没有链接了.

线索2

删除/重新创建一个新文件 B1.h
此解决方案可以解决问题,但如果我重新启动计算机,效果将会消失.

如何修复项目以使自动重新编译过程再次正确?
更具体地说,我正在寻找某种" 终极清洁/修复此项目 "按钮.

(次要问题)问题的原因是什么?

很难确定原因,因此欢迎部分答案或不确定的猜测.

一些进展

一天之后,它终于C2.cpp正确地重新编译- 即使在计算机重启后也是如此.

我仍然不确定我采取了哪些行动来解决这个问题.

但是,这是我的猜测,以防它可能对某人有用.

我的项目文件结构如下: -

F/
F/Debug/     <--#X contains .exe,.exp,.ilk,.lib,.pdb; one file per type
F/Release/
F/F/         <-- contains all my .cpp,.h; 
F/F/Debug/   <--#Y contains many .obj of my own code, .pch, .log, .tlog
F/F/Release/

我删除了所有内容#X,但没有删除#Y.
删除所有.obj#Y可能是解决这一问题的措施.

我将不得不对它进行更多测试,以确定这种方法的可靠程度......
请注意,上述所有问题仍然没有答案.

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有