外部工具
外部工具
Cargo 的目標(biāo)之一是與第三方工具(如 IDE 和其他構(gòu)建系統(tǒng))的簡單集成。為了簡化集成,Cargo 有幾個設(shè)施:
一個
cargo metadata
命令,以 JSON 格式輸出包結(jié)構(gòu)和依賴關(guān)系信息,一個
--message-format
標(biāo)志,輸出有關(guān)特定構(gòu)建的信息,以及支持自定義子命令.
關(guān)于包結(jié)構(gòu)的信息
包結(jié)構(gòu)的資料
您可以使用cargo metadata
命令,以獲取有關(guān)包結(jié)構(gòu)和依賴關(guān)系的信息。命令的輸出如下所示:
{
// Integer 版本格式數(shù)字.
"version": integer,
// 工作區(qū)包的列表, 包括 依賴項.
"packages": [
{
// 包 識別id 隊列.
"id": PackageId,
"name": string,
"version": string,
"source": SourceId,
// 確認(rèn)依賴的一個列表, 可看 `resolve` 字段中的真實依賴.
"dependencies": [ Dependency ],
"targets: [ Target ],
// Cargo.toml 路徑
"manifest_path": string,
}
],
"workspace_members": [ PackageId ],
// 依賴 關(guān)系圖.
"resolve": {
"nodes": [
{
"id": PackageId,
"dependencies": [ PackageId ]
}
]
}
}
格式穩(wěn)定且有版本化。調(diào)用cargo metadata
時,你應(yīng)該通過--format-version
明確標(biāo)記,以避免向前不兼容的危險。
如果你正在使用 Rust,這有個cargo_metadata箱.
構(gòu)建信息
關(guān)于構(gòu)建的資料
傳遞--message-format=json
給,Cargo, 將在構(gòu)建期間輸出以下信息:
編譯器錯誤和警告,
制作的工件,
構(gòu)建腳本的結(jié)果(例如,本機依賴項).
輸出以每行格式的 JSON 對象轉(zhuǎn)到 stdout。reason
字段區(qū)分不同類型的消息.
有關(guān) Makefile 兼容格式的依賴關(guān)系的信息存儲在工件旁的.d
文件中。
自定義子命令
自定義的子命令
Cargo 設(shè)計為,可以使用新的子命令進(jìn)行擴展,而無需修改 Cargo 本身。這是通過轉(zhuǎn)化一個 cargo (?<command>[^ ]+)
的命令調(diào)用,變化為調(diào)用外部工具cargo-${command}
來實現(xiàn)的。外部工具必須存在于用戶其中一個$PATH
目錄中.
當(dāng) Cargo 調(diào)用自定義子命令時,子命令的第一個參數(shù)將像往常一樣是自定義子命令的文件名。第二個參數(shù)將是子命令名稱本身。例如,在調(diào)用cargo-${command}
時,第二個參數(shù)是${command}
。命令行上的其他所有參數(shù)將保持不變.
Cargo 還可以用cargo help ${command}
顯示自定義子命令的幫助輸出。Cargo 假定子命令將在第三個參數(shù)出現(xiàn)時,打印幫助消息--help
.所以,cargo help ${command}
會調(diào)用cargo-${command} ${command} --help
.
自定義子命令可以使用CARGO
環(huán)境變量回調(diào) Cargo?;蛘?,它可以鏈接到作為一個庫的cargo
箱,但這種方法有缺點:
Cargo 作為庫是不穩(wěn)定的:API 可能會更改,但不會棄用
鏈接的 Cargo 庫的版本可能與 Cargo 二進(jìn)制文件不同
更多建議: