VS2010中工程总是重新编译的问题

一个Qt写的包含HTTP下载文件功能的小项目,由于对QNetworkReply的机制不太了解

于是将原来自己定义的类QDownload丢弃重新用wininet的api实现了一个QHttpDownload类,继承自QThread

这样每个QHttpDownload实例对应一个下载任务,在线程内进行不会导致主界面卡死.

因为要不断的编译调试.突然发现即使没有任何代码的改动,直接启动调试时候也会提示项目已过期.

Vc的编译默认都是增量编译的,也就是只编译上次成功编译以来修改过的文件.很明显这里出现了差错,导致提示项目过期.

网上搜来的是说项目里包含了不存在的头文件导致的.

这个包含不是用#include包含进来的,#include的直接会提示找不到头文件.

这里的包含是指解决方案资源管理器里面显示的那些文件.也就是在vcxproj文件里标明的的头文件

移除掉不存在的头文件就可以了.

步骤:

1.开启Vs2010 ide的相关log

参考:http://blogs.msdn.com/b/vsproject/archive/2009/07/21/enable-c-project-system-logging.aspx

2.使用DebugView监视看是哪个头文件不存在 / 或者用其他工具分析vcxproj文件

 一般形式就类似于

project "xxx" is not up to date because xxxx were missing.

up to date is missing : xxxxx.h

这时候在解决方案资源管理器里移除,重新生成一次就可以了.

相关链接

http://connect.microsoft.com/VisualStudio/feedback/details/574245/alwayscreate-needs-documentation-or-vs10-fix

http://code.logos.com/blog/2010/12/fixing_c_projects_that_always_rebuild.html

2012.07.31补遗

在自己电脑上即使那些头文件都去掉还是会发生总是重编译的情况

经过研究是跟预编译有关

若项目里的预编译头文件修改,或者预编译头文件里#include的头文件发生改变则需要清理项目并重新生成一次.

也就是说生成后会修改pch文件的情况下必须手动重新生成一次.

个案而已,记录下来免得下次不知道怎么解决.

原文地址:https://www.cnblogs.com/Athrob/p/2548323.html