构建或编译

Fri*_*n3L 12 c++ compilation build

关于编译和构建之间的区别,我有一个理论问题.我正在编写一个需要花费大量时间来构建的c ++项目,所以我已经告诉要在"我修改了任何头文件"的情况下进行构建.真的吗?如果我在headder文件中添加一个新属性,那么我必须构建吗?编译不够?

谢谢!

us2*_*012 19

"建筑"是一个模糊的术语,通常意味着整个过程,预处理,编译和链接.在源更改之后,必须重做这些过程的哪些部分取决于已更改的内容.如果您只更改了单个.cpp源,则只需重新编译它并再次链接对象即可.如果更改.h标题,则必须重新编译包含此标题的所有源文件,这通常很昂贵,因为特定于项目的标题往往包含在许多源文件中.

简而言之,如果您对源进行了更改,则必须重新编译受此影响的所有文件,并且必须重新链接整个二进制文件.


小智 12

编译是将源代码转换为目标代码的行为.

链接是将目标代码与库组合成原始可执行文件的行为.

构建是由编译和链接组成的序列,可能还有其他任务,例如安装程序创建.

取自编译代码和可执行代码之间的区别是什么?

因此,您只需(重新)编译比源文件更旧的对象代码("最近编辑过"),以链接包含程序中最新更改的可执行文件.实际上,这是make决定是否构建文件的方式.


Pra*_*eep 7

编译是将高级代码转换为机器级代码的过程

构建是将高级语言转换为可执行文件的过程.它将涉及编译和链接.

如果修改头文件,头文件可能会影响几个c ++文件,因此要获得最终的可执行文件,您需要构建它

单独编译是没有用的,因为它不会产生最终的excutable,因此你需要始终构建.

  • 我不同意最后一个 - **编译单独使用** - 有时您需要编译以检查代码是否有效可编译 - 您不需要构建因为您的应用程序还没有准备好...或者那部分并不是直接用于exe输出...... (3认同)