2011-09-13 48 views
1

我正在处理一个非常古老的大型VC6 ++项目,这一切都搞砸了。在任何地方都有未使用的文件和文件夹,文件夹的副本,只是在当前状态下手动清理它们而已。清理一个VC++ 6项目

它会最终完成,但有没有简单的方法来检查干净的编译时使用什么文件和文件夹?

项目设置并不能帮助我,因为它只是使用文件夹和其他包含目录的副本。

有什么建议吗?

+0

在linux下,我只是建立一些东西,并检查最后访问的文件的时间戳,不知道Windows是否有类似的东西。 – PlasmaHH

+0

Visual C++ 6? (/我检查当前日期)...在2011年... ...对于您的问题,请删除除DSW和DSP文件以外的所有内容,然后尝试编译。对于每个错误,请将编译器所需的ONE文件放回原处,然后重试。最后,你将只有该项目所需的东西... – paercebal

+0

这个问题是非常类似于http:// stackoverflow。com/questions/1301850/tools-to-find-included-headers-which-are-unused – dip

回答

1

VC6会产生一个makefile你:

你可以使用生成的生成文件(和关联的.dep文件)作为起点并将其编辑到构建中使用的文件列表。

除了构建日志中可能显示的.c/.lib文件之外,您还可以看到项目所依赖的头文件。有一点要记住,你可能也想确保你跟踪.dsw.dsp工作区和项目文件。

如果你有点冒险,你可以说服makefile实际上将源文件复制到其他位置,并使用适当的覆盖特定的宏和/或依赖关系。但是这可能比一次性努力的价值更麻烦。

最后,有一个商业产品,CopyWiz by Kinook Software,似乎有可能做你想要的功能(并且它支持VC++ 6)。注意:我不确定它是否会按照您的要求做,但可能值得一看。

+0

我写了一个解析makefile的小工具,它是一个非常棒的解决方案。非常感谢你! – John

2

那么,如果你想解析编译器输出,你可以得到哪些文件实际使用。我也发现this谷歌搜索时,你可能想尝试(我没有尝试过自己)。我的方式是清理构建,列出所有源文件,构建,并为每个来源找到其相应的.obj。没有使用.obj的人没有使用。请注意,这仅适用于源文件,未使用的头文件不会被检测到。

+1

检查obj文件似乎是一个好主意。但是检查文件的最后访问日期呢?我想到了这一点,它应该显示哪些头文件也被使用。哼。我可能会错过一些东西。 – John

+0

从obj文件方法开始。它非常简单快捷,它可以摆脱很多废弃物。 – Dennis

0

是的。从SysInternals运行进程监视器。它可以捕获所有文件系统事件并根据路径和其他因素对其进行过滤。

因此,将过滤器设置为源树的根目录,只有成功读取文件(VC会在很多地方查找标头)并构建项目。您可能仍会看到数千个事件。因此,将它们保存到文件,排序路径,并删除重复的路径(头特别是将有许多重复的条目)