【Rust 小技巧】 指定 target 輸出目錄

在 Rust 編程語言中,target 目錄是由 Cargo(Rust 的包管理和構建工具)自動生成的。它主要用於存放構建輸出的產物文件相關的編譯期產生的中間文件等。但是 target 目錄往往會非常大,即使一個簡單的 hello world 程序,就已經達到 9 MB 了。

可能一個比較簡單的項目,會達到 1 GB 多。甚至有些網友調侃——如果電腦硬盤太小,可能學不了 Rust。

0x01 指定 target 目錄

另外當電腦中的 Rust 項目太多時,無法管理 target 目錄。其實我們可以指定所有項目統一的 target 目錄。下面將以 Windows 操作系統爲例演示。

首先在 C:\Users\用戶名\.cargo\ 目錄下,找到 config.toml 文件。如果在該目錄下沒有 config.toml 文件,則需要創建該文件。如下圖所示:

注意:config 文件也有可能沒有擴展名,如 config,又或者是其它擴展名,如 config.txt,配置文件的擴展名不重要,重要的是文件名稱必須是 config

在文件中添加下面的配置信息:

[build]

target-dir = "D:/my-target"

上面的配置是指定所有項目的統一 target 目錄爲 D:/my-target。如下圖:

我們再次編譯項目,查看項目根目錄和 D:/my-target 目錄,如下圖:

可以看到,在項目的工程目錄已經沒有 target 目錄,真正的 target 目錄已經被我們指定爲 D:/my-target 目錄了。

0x02 target 目錄有什麼

下面是一個簡單項目的 target 目錄,讓我們看下它會包含什麼呢?

target 目錄包含以下幾個子目錄和文件:

target/debug:

target/release:

target/doc:

target/.fingerprint:

target/package:

其他臨時文件和目錄:

0x03 指定 target 目錄的優缺點

統一存放 target 文件既有優點也有缺點:

優點

緩存複用

如果多個項目使用相同的依賴庫,通過指定一個共享的 target 目錄,可以複用編譯緩存,減少重複編譯的時間,大幅提升構建效率。

管理方便

通過將編譯輸出集中到一個特定目錄,可以更方便地管理和清理編譯輸出文件。當 Rust 項目過多時,我們可以隨時清理 target 文件。

缺點

多個項目共享同一個 target 目錄可能會因爲不同的依賴版本而產生衝突,當遇到衝突時需要及時清理 target 目錄。

0x04 小結

總體上講,指定 target 目錄可以帶來顯著的構建效率提升,但也需要考慮潛在的版本衝突問題,這個需要根據實際的項目來取捨。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/B0sIBX355tLCXYJ9l4V7cw