我正在编写一个关于dev c ++的项目,它有大量的文件。但是,每次我再次编译代码时,它们中最大的部分都不会改变,因此不必再次编译它们。
如何只编译我选择的几个文件,而不是整个项目?
或者编译器已经在做了吗?
编译时间会有所帮助吗?
*这些都是理论上的问题,我真的不介意每次等几秒钟。它让我感兴趣。
谢谢
答案 0 :(得分:1)
编译是一个多阶段过程,分为两个部分:编译和链接。实际上,即使程序编译得很好,也不一定有效,因为链接时会出错。从源代码到目标文件的整个转换过程可以称为构建。
编译是指处理源代码文件(.c,.cc或.cpp)以及创建'对象'文件。编译器只生成与编译的源代码文件相对应的机器语言指令。此步骤不会创建用户实际可以运行的任何内容。
链接是指从多个目标文件创建单个可执行文件。在此步骤中,链接器通常会抱怨未定义的函数(通常是main本身)。因此,在编译时,如果函数未在当前文件中定义,则假定该函数在其他位置声明,并且链接器链接其他文件中定义的函数
编译器做了它的事情,并且链接器做了它的事情 - 通过保持函数分离,减少了程序的复杂性。主要的优点是这允许创建大型程序而无需重做编译步骤每次更改文件。相反,使用所谓的" 条件编译",只需编译那些已更改的源文件;对于其余部分,目标文件是链接器的足够输入。最后,这使得实现预编译代码库变得简单:
如果你正在使用IDE,那么默认会对你进行处理,对于命令行工具,这里有一个叫做make的漂亮工具。