Cargo 環(huán)境變量

2021-09-27 14:16 更新

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_HOMECargo 在本地緩存注冊(cè)表索引和箱子的 git 版本。默認(rèn)情況下,這些存儲(chǔ)在$HOME/.cargo,但是這個(gè)變量重寫了這個(gè)目錄的位置。一旦箱被緩存,它就不會(huì)被清除命令刪除。
CARGO_TARGET_DIR相對(duì)于當(dāng)前工作目錄,放置所有生成的工件的位置.
RUSTCCargo 不運(yùn)行rustc,而執(zhí)行指定的編譯器。
RUSTC_WRAPPERCargo 將執(zhí)行這個(gè)指定的包裝器,而不是簡單地運(yùn)行rustc。將 rustc 調(diào)用 作為其命令行參數(shù)傳遞,第一個(gè)參數(shù)是 rustc.
RUSTDOCCargo 將執(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 自身文檔中.
HOSTRust 編譯器的主機(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 ,RUSTDOCCargo 已經(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路徑。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)