单元测试 - 仅在"int main()"左右重新编译以减少编译时间

unit test - recompile only around "int main()" to reduce compilation time

本文关键字:编译 时间 新编译 左右 仅在 int main 单元测试      更新时间:2023-10-16

我的Visual Studio解决方案中的项目可以分为:-

Library.h, Library.cpp
User.h, User.cpp  (#include Library.h)
Main.h, Main.cpp  (#include User.h)  has "int main()"

(真正的项目远比这大得多。

每当我编辑任何Library.h文件并按F5时,它都会重新编译整个项目。 这是有道理的。

现在我想编码/调试Library并单独测试它,我不想重新编译所有内容,因为它需要花费更多时间。

因此:-

  • 我创建了Main2.cpp,它#includeLibrary.h,并且根本没有涉及User的代码。
  • 我注释掉了整个main.cpp.

这是我的主要2.cpp:-

#include "Library.h"
int main(){ .... some code about library ....}

当我按 F5 时,它编译了所有.cpp并且运行良好。 这还是有道理的。

问题

如果我编辑Library.h,然后再次按 F5,它将重新编译:-

  • library.cpp
  • User.cpp<---不!
  • main.cpp<---不!
  • main2.cpp

问题

如何让Visual Studio只重新编译必要的文件以节省编译时间?
(在这种情况下仅编译library.cppmain2.cpp)

我想需要重新编译很多文件是因为User内部可能有一些静态函数可以library做一些事情

如果我确定没有怎么办?
即使有什么,我也想(冒险)忽略它。

将解决方案分为 3 个项目:

  • 图书馆
  • 库测试
  • 主要

当您不想重新编译"Main"时,只需右键单击它并卸载项目即可。

您可能应该考虑将 Library.h 分解为更小的部分,以便依赖项更加独立。

我建议不要为Visual Studio感到头疼,而是下载适用于Windows的MinGW c ++编译器,只需编译一个较小的单元测试实例,您需要这些文件作为一种不同的项目一起在控制台中