【问题标题】:Cleaning up a VC++ 6 project清理 VC++ 6 项目
【发布时间】:2011-11-15 23:29:06
【问题描述】:

我正在处理一个非常古老且大型的 VC6++ 项目,但一切都一团糟。到处都有未使用的文件和文件夹,文件夹的副本,在当前状态下手动清理它只是一团糟。

最终会完成,但是有什么简单的方法可以检查干净编译时使用了哪些文件和文件夹?

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

有什么建议吗?

【问题讨论】:

  • 在linux下我只是构建东西并检查文件的最后访问时间戳,不知道windows是否有类似的东西。
  • Visual C++ 6? (/me check current date)... In 2011?... 对于您的问题,删除除 DSW 和 DSP 文件之外的所有内容,然后尝试编译。对于每个错误,放回编译器需要的 ONE 文件,然后重试。最后,您将只拥有该项目所需的东西......
  • 因此,您的应用程序可能已经使用了十年以上,并且基于 C++ 语言的一个相当错误的实现。它真的仍然符合当前的要求吗?重写它真的不值得吗?不过,我知道将项目恢复到可管理状态可能是做出上述决定不可或缺的一步。

标签: c++ visual-c++-6


【解决方案1】:

VC6 会为你生成一个 makefile:

您可以使用生成的 makefile(以及关联的 .dep 文件)作为起点,然后将其向下编辑到构建中使用的文件列表。

除了可能显示在构建日志中的.c/.cpp/.lib 文件之外,您还可以查看项目所依赖的头文件。要记住的一件事是,您可能还需要确保跟踪 .dsw.dsp 工作区和项目文件。

如果您有点冒险精神,您可以通过适当覆盖某些宏和/或依赖项来说服 makefile 将源文件实际复制到其他位置。但这可能比一次性努力更值得。

最后,有一个商业产品CopyWiz by Kinook Software,它似乎具有可以满足您的需求的功能(并且它支持 VC++ 6)。注意:我不确定它是否能满足您的需求,但可能值得一看。

【讨论】:

  • 我写了一个解析makefile的小工具,它是一个极好的解决方案。非常感谢!
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 检查 obj 文件似乎是个好主意。但是如何检查文件的最后访问日期呢?我考虑了这一点,它也应该显示使用了哪些头文件。唔。我可能遗漏了什么。
    • 从obj文件方法开始。它既简单又快速,它会摆脱你的一些过时的东西。
    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-17
    • 2017-12-23
    相关资源
    最近更新 更多