Environment Variables
Cargo 設(shè)置,并讀取許多環(huán)境變量,代碼可以檢測(cè)或覆蓋這些環(huán)境變量。以下是 Cargo 與它們交互時(shí),組織的變量列表:
Environment variables Cargo reads
Cargo 會(huì)讀取的環(huán)境變量
您可以重寫這些環(huán)境變量來更改 Cargo 在系統(tǒng)中的行為:
名(ENV) | 曰 |
---|---|
CARGO_HOME | Cargo 在本地緩存注冊(cè)表索引和箱子的 git 版本。默認(rèn)情況下,這些存儲(chǔ)在$HOME/.cargo ,但是這個(gè)變量重寫了這個(gè)目錄的位置。一旦箱被緩存,它就不會(huì)被清除命令刪除。 |
CARGO_TARGET_DIR | 相對(duì)于當(dāng)前工作目錄,放置所有生成的工件的位置. |
RUSTC | Cargo 不運(yùn)行rustc ,而執(zhí)行指定的編譯器。 |
RUSTC_WRAPPER | Cargo 將執(zhí)行這個(gè)指定的包裝器,而不是簡單地運(yùn)行rustc 。將 rustc 調(diào)用 作為其命令行參數(shù)傳遞,第一個(gè)參數(shù)是 rustc. |
RUSTDOC | Cargo 將執(zhí)行此指定的rustdoc 實(shí)例,而不是rustdoc . |
RUSTDOCFLAGS | 空格分隔的自定義標(biāo)志列表,用來傳遞給 Cargo 執(zhí)行的所有rustdoc 調(diào)用 。與cargo rustdoc 不同,這對(duì)于傳遞一個(gè)參數(shù)給 全部的 rustdoc 實(shí)例是有用的。 |
RUSTFLAGS | 自定義參數(shù)的空格分隔列表,用來傳遞給 Cargo 執(zhí)行的所有編譯器調(diào)用。與cargo rustc 不同,這對(duì)于傳遞一個(gè)標(biāo)志 全部的 編譯實(shí)例是有用的。 |
CARGO_INCREMENTAL | 如果設(shè)置為 1,則 Cargo 將強(qiáng)制在當(dāng)前編譯中啟用增量編譯,而當(dāng)設(shè)置為 0,則強(qiáng)制禁用增量編譯。如果這個(gè) ENV 不存在,否則將使用 Cargo 默認(rèn)值。 |
CARGO_CACHE_RUSTC_INFO | 如果這個(gè)設(shè)置為 0,那么 Cargo 將不嘗試緩存編譯器版本信息. |
注意,Cargo 也會(huì)在.cargo/config
配置中讀取環(huán)境變量,如那份文件
Environment variables Cargo sets for crates
Cargo 為 crates 設(shè)置的環(huán)境變量
Cargo 在編譯時(shí),會(huì)將這些環(huán)境變量暴露在箱子中。請(qǐng)注意,這也適用于測(cè)試二進(jìn)制文件。要在 RIST 程序中獲得這些變量中的任何一個(gè)變量的值,請(qǐng)執(zhí)行以下操作:
let version = env!("CARGO_PKG_VERSION");
version
現(xiàn)在將包含了CARGO_PKG_VERSION
值。
名 | 曰 |
---|---|
CARGO | 執(zhí)行構(gòu)建的二進(jìn)制cargo 路徑. |
CARGO_MANIFEST_DIR | 包含包的清單的目錄. |
CARGO_PKG_VERSION | 您的包的完整版本. |
CARGO_PKG_VERSION_MAJOR | 你的軟件包的主要版本. |
CARGO_PKG_VERSION_MINOR | 您的包的次要版本. |
CARGO_PKG_VERSION_PATCH | 包的補(bǔ)丁版本. |
CARGO_PKG_VERSION_PRE | 包的預(yù)發(fā)布版本. |
CARGO_PKG_AUTHORS | 從程序包的清單中,冒號(hào)分隔出作者列表. |
CARGO_PKG_NAME | 你的包的名字. |
CARGO_PKG_DESCRIPTION | 從包的清單中描述. |
CARGO_PKG_HOMEPAGE | 從包的清單中的主頁. |
CARGO_PKG_REPOSITORY | 從包的清單中存儲(chǔ)庫. |
OUT_DIR | 如果包具有構(gòu)建腳本,則將其設(shè)置為,構(gòu)建腳本應(yīng)該在其中放置其輸出的文件夾。更多信息見下文. |
Environment variables Cargo sets for build scripts
Cargo 為構(gòu)建腳本設(shè)置的環(huán)境變量
當(dāng)運(yùn)行構(gòu)建腳本時(shí),Cargo 設(shè)置多個(gè)環(huán)境變量.因?yàn)榫幾g生成腳本時(shí)還沒有設(shè)置這些變量,所以上面的示例使用env!
無法工作,而是在運(yùn)行構(gòu)建腳本時(shí)需要檢索值:
use std::env;
let out_dir = env::var("OUT_DIR").unwrap();
out_dir
現(xiàn)在將包含的價(jià)值OUT_DIR
.
名 | 曰 |
---|---|
CARGO | 執(zhí)行構(gòu)建的二進(jìn)制cargo 路徑. |
CARGO_MANIFEST_DIR | 包含正在構(gòu)建的包的清單的目錄(包含構(gòu)建腳本的包)。還要注意,這是生成腳本啟動(dòng)時(shí),當(dāng)前工作目錄的值. |
CARGO_MANIFEST_LINKS | 清單links 的值. |
CARGO_FEATURE_<name> | 對(duì)于正在構(gòu)建的包的每個(gè)激活特性,此環(huán)境變量會(huì)讓<name> 功能名稱存在,名稱的- 會(huì)轉(zhuǎn)換成_ . |
CARGO_CFG_<cfg> | 對(duì)正在構(gòu)建包的每個(gè)配置選項(xiàng),此環(huán)境變量將包含配置的值,其中<cfg> 就是配置的名稱,并將- 翻譯成_ . 如果設(shè)置了布爾配置,則存在布爾配置,否則不存在。具有多個(gè)值的配置被連接到單個(gè)變量,該變量用, 分隔就好。 |
OUT_DIR | 所有輸出都應(yīng)該放在這個(gè)文件夾。此文件夾位于正在構(gòu)建的包的構(gòu)建目錄中,并且對(duì)于所討論的包是唯一的。 |
TARGET | 正在編譯的目標(biāo)三元組。該為這個(gè)三元組編譯本機(jī)代碼。關(guān)于目標(biāo)三元組的更多信息在clang 自身文檔中. |
HOST | Rust 編譯器的主機(jī)三元組. |
NUM_JOBS | 指定為頂層并行的并行性。這可以傳遞一個(gè)-j 參數(shù)到系統(tǒng)(像make ). 注意,在解釋這個(gè)環(huán)境變量時(shí)應(yīng)該小心。出于歷史目的,仍然提供此功能,但是例如,最新版本的 Cargo 不需要運(yùn)行make -j ,因?yàn)樗鼤?huì)自動(dòng)。Cargo 自行實(shí)現(xiàn)[JooServer],并且允許構(gòu)建腳本繼承這些信息,因此與 GNU 兼容的程序?qū)⑹棺鳂I(yè)服務(wù)器已經(jīng)具有適當(dāng)配置的并行性。 |
OPT_LEVEL ,DEBUG | 為了分析,當(dāng)前正在構(gòu)建的相應(yīng)變量值. |
PROFILE | 發(fā)布版本用release ,而debug 用于其他構(gòu)建. |
DEP_<name>_<key> | 有關(guān)此組環(huán)境變量的更多信息,請(qǐng)參閱links . |
RUSTC ,RUSTDOC | Cargo 已經(jīng)決定使用的編譯器和文檔生成器,傳遞給構(gòu)建腳本,以便構(gòu)建腳本也可以使用它. |
RUSTC_LINKER | 如果指定了,Cargo 為了當(dāng)前目標(biāo),決定使用的鏈接器(二進(jìn)制文件)的路徑。這個(gè)鏈接器可以通過編輯.cargo/config 更改,欲了解更多信息,請(qǐng)參閱有關(guān)文檔Cargo 配置。 |
Environment variables Cargo sets for 3rd party subcommands
Cargo 為 第三方子命令設(shè)置的環(huán)境變量
Cargo 將這個(gè)環(huán)境變量公開給第三方子命令(即,名為cargo-foobar
放置在$PATH
):
CARGO
- 執(zhí)行構(gòu)建的二進(jìn)制cargo
路徑。
更多建議: