gpt4 book ai didi

c++ - 在开发过程中每次都必须重新编译 C++ 代码吗?

转载 作者:搜寻专家 更新时间:2023-10-31 01:29:52 31 4
gpt4 key购买 nike

假设我们有一个庞大的代码库,并且我们正在使用 C++ 进行开发。我们是否必须每次都重新编译才能测试代码?

如果是,那么开发需要很长时间。

这个问题的解决方案是什么?

最佳答案

是的,如果您想测试它,您肯定需要编译 C++ 代码。 C++ 代码未经编译无法执行。

但是,如果您巧妙地组织项目,即使有数千(甚至更多)个文件,编译也可能只需要几秒钟,甚至最多一分钟。

默认情况下,您的构建系统将运行 incremental build ,除非您明确请求“重建”或之前进行了“清理”。然后它会相应地调用编译器/链接器并确保它只编译/链接需要的东西(如果 cpp 文件没有改变,不需要编译它,这都是基于文件时间戳,如果“目标”文件(generated) is older than the cpp file (source),构建系统知道它是最新的,不会再次生成它。如果你使用 Visual Studio 和/或 CMake 或任何 IDE,构建系统,它们都支持那个!

此外,您可以遵循一些准则来加快速度:

首先,在模块(库)中组织您的项目,最好使用动态链接。然后当库中的文件发生变化时,只需要编译这个库(其他库或使用修改后的库的程序将不必再次编译)。

当您只修改一个实现文件(cpp 文件)时,只需要这个文件 + 使用它的模块的链接。

当您修改头文件(h 文件)时,包括它的所有 cpp 文件都需要重新编译,因此您必须小心优化您的包含。喜欢forward declaration (see why here)尽可能包含(否则,您的 header 将成为所有 cpp 文件的依赖项,使用其他 header 文件,包括您的...作为级联,修改此 header 文件最终将需要编译 cpp 文件的音调).不要包含你不需要的文件(因为当头文件改变时它会触发一个新的无用的构建)。可能使用 precompiled headers加速编译。

注意:如评论所述,显然有一些工具可以 interpret C++ without compiling it ...但这并不是 C++ 最初设计的目的。而且我怀疑它们在运行时是否会像编译代码一样快......所以你可能会节省 20 秒的增量构建时间,然后在运行时节省几分钟......

关于c++ - 在开发过程中每次都必须重新编译 C++ 代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49082440/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com