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



在Rust正式支持增量汇编之前提出了这个问题。Rust 1.24.0及以后启用默认情况下的增量汇编(DEBUG(构建。

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

我读到Rust缺乏增量汇编(尽管有Beta功能(。

  1. 这类似于在C 中的标题中实现所有内容(例如Boost的大部分(?

  2. 如果上述正确,这是否将生锈限制在较小的依赖性的小项目中?(如果例如,QT或KDE是仅标题库,那么使用它们的程序将非常痛苦,因为您每次要编译自己的代码时都会有效地重新编译QT/KDE。(

    (

在C和C 中,汇编单元通常是源文件,并且其传输的所有标头文件都包含。应用程序或库通常由链接在一起的多个汇编单元组成。应用程序或库可以与其他库链接。这意味着更改源文件需要仅重新编译该源文件,然后再重新链接,更改外部库只需要重新链接,而是更改标头文件(无论是项目的一部分还是外部;编译器都不能告诉差异(重新编译所有使用它然后重新链接的源文件。

在生锈中,板条箱是编译单元。(板条箱可以是应用程序或库。( RUST不使用标头文件;取而代之的是,等效信息以元数据存储在编译的板条箱中(该分析速度更快,并且与C/C 中的预编译标头具有相同的效果(。板条箱还可以与其他板条箱相连。这意味着更改板条箱的任何源文件都需要重新编译整个板条箱,并且更换板条箱需要重新编译所有依赖它的板条箱(当前,这意味着即使API恰好没有更改,这意味着从源重新编译(。

要回答您的问题,不,Rust不会每次重新编译项目时都会重新编译所有依赖性;实际上相反。

RUST中的增量汇编是关于在板条箱以前的编译中重复使用以加快汇编时间的工作。例如,如果您更改模块并且不会影响其他模块,则编译器将能够重复使用上次编译其他模块时生成的数据。缺乏增量汇编通常只是大或复杂的板条箱(例如,大量使用宏的人(。

相关内容

  • 没有找到相关文章

最新更新