首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rust缺乏增量编译到底意味着什么?

Rust缺乏增量编译到底意味着什么?
EN

Stack Overflow用户
提问于 2017-06-03 22:09:50
回答 1查看 1.8K关注 0票数 5

这个问题是在Rust正式支持增量编译之前提出的。默认情况下,锈1.24.0和更高版本为开发(调试)构建启用增量编译。

我是个局外人,想看看Rust是否适合我的项目。

我读过,Rust缺乏增量编译(尽管有beta特性)。

  1. 这类似于在C++中的标头中实现所有内容(就像在助推中的大部分内容一样)
  2. 如果以上所述是正确的,这是否将Rust限制在具有较小依赖项的相当小的项目上?(如果,比如说,Qt
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-04 00:22:26

在C和C++中,编译单元通常是源文件和它所传递的所有头文件。应用程序或库通常由链接在一起的多个编译单元组成。应用程序或库还可以与其他库链接。这意味着,更改源文件只需要重新编译该源文件,然后再重新链接,更改外部库只需要重新链接,但是更改头文件(它是项目的一部分还是外部的;编译器无法分辨区别)需要重新编译使用它的所有源文件,然后再重新连接。

在Rust中,板条箱是编译单元。(机箱可以是应用程序或库。) Rust不使用头文件;相反,等效的信息存储在已编译的板条箱中的元数据中(解析速度更快,并具有与C/C++中预编译头相同的效果)。一个板条箱还可以与其他板条箱连接。这意味着更改机箱的任何源文件都需要重新编译整个机箱,而更改机箱则需要重新编译所有依赖它的板条箱(目前,这意味着从源代码重新编译,即使API碰巧没有更改)。

为了回答您的问题,不是,Rust并不是每次重新编译项目时都重新编译所有的依赖项;实际上恰恰相反。

Rust中的增量编译是关于重用以前在机箱编译中完成的工作,以加快编译时间。例如,如果更改一个模块而不影响其他模块,编译器将能够重用上次编译其他模块时生成的数据。缺乏增量编译通常只是大型或复杂的板条箱(例如那些大量使用宏的)的问题。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44348978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档