Rust中的Cargo構(gòu)建、運行、調(diào)試
基本概念
Cargo是rustup安裝后自帶的,Cargo 是 Rust 的構(gòu)建系統(tǒng)和包管理器。
Rust 開發(fā)者常用 Cargo 來管理 Rust 工程和獲取工程所依賴的庫。入門教程中使用 cargo new helloworld 命令創(chuàng)建了一個名為 helloworld 的工程,Cargo 新建了一個名為 helloworld 的文件夾并在里面部署了一個 Rust 工程最典型的文件結(jié)構(gòu)。這個 helloworld 文件夾就是工程本身。
Cargo相關(guān)命令
Cargo 除了創(chuàng)建工程以外還具備構(gòu)建(build)工程、運行(run)工程等一系列功能,具體如下:
#創(chuàng)建—個普通的項目: cargo new project_name --bin #創(chuàng)建一個庫cargo build cargo new lib_name --lib--vcs none #構(gòu)建編譯,默認會編譯到target/debug/project_name下 cargo build #運行 cargo run #構(gòu)建編譯發(fā)布版本,這會做很多優(yōu)化,并編譯到target/release/project_name下 cargo build --release #如果你想修改cargo .lock文件的話,運行它 cargo update #如果你只是想更新rand版本的話,運行它 cargo update-p rand #運行test測試 cargo test abc #檢查代碼,確保能通過編譯,但不產(chǎn)生執(zhí)行文件其速度比cargo build快得多編寫代碼時可以反復(fù)的使用cargo check檢查代碼,提高效率。 cargo check
創(chuàng)建工程目錄說明
cargo new helloworld可以創(chuàng)建一個helloword的工程目錄,目錄結(jié)構(gòu)如下:

src下面是代碼目錄。target是編譯后的文件目錄。.gitignore主要功能是屏蔽某些文件,使得這些文件不被追蹤(tracked),自然push后也不會上傳到github等平臺。Cargo.lock編譯過程中自動生成的 Cargo.lock 文件,記錄了相關(guān)資源信息,保證我們以后可以重新構(gòu)建。Cargo.toml為該工程的配置文件,這個關(guān)系類似于: package.json 是 npm 的配置文件。
VSCode 中配置 Rust工程
打開 helloworld工程目錄 之后,在里面新建一個新的文件夾 .vscode (注意 vscode 前面的點,如果有這個文件夾就不需要新建了)。在新建的 .vscode 文件夾里新建兩個文件 tasks.json 和 launch.json,文件內(nèi)容如下:
tasks.json:
{
????"version":?"2.0.0",
????"tasks":?[
????????{
????????????"label":?"build",
????????????"type":?"shell",
????????????"command":"cargo",
????????????"args":?["build"]
????????}
????]
}
launch.json:
{
????"version":?"0.2.0",
????"configurations":?[
????????{
????????????"name":?"(Windows)?啟動",
????????????"preLaunchTask":?"build",
????????????"type":?"cppvsdbg",
????????????"request":?"launch",
????????????"program":?"${workspaceFolder}/target/debug/${workspaceFolderBasename}.exe",
????????????"args":?[],
????????????"stopAtEntry":?false,
????????????"cwd":?"${workspaceFolder}",
????????????"environment":?[],
????????????"externalConsole":?false
????????},
{
????????????"name":?"(gdb)?啟動",
????????????"type":?"cppdbg",
????????????"request":?"launch",
????????????"program":?"${workspaceFolder}/target/debug/${workspaceFolderBasename}.exe",
????????????"args":?[],
????????????"stopAtEntry":?false,
????????????"cwd":?"${workspaceFolder}",
????????????"environment":?[],
????????????"externalConsole":?false,
????????????"MIMode":?"gdb",
????????????"miDebuggerPath":?"這里填GDB所在的目錄",
????????????"setupCommands":?[
????????????????{
????????????????????"description":?"為?gdb?啟用整齊打印",
????????????????????"text":?"-enable-pretty-printing",
????????????????????"ignoreFailures":?true
????????????????}
????????????]
????????}
????]
}
調(diào)試程序的方法與其它環(huán)境相似,只需要在行號的左側(cè)點擊紅點就可以設(shè)置斷點,在運行中遇到斷點會暫停,以供開發(fā)者監(jiān)視實時變量的值。
到此這篇關(guān)于Rust之Cargo構(gòu)建、運行、調(diào)試的文章就介紹到這了,更多相關(guān)Rust Cargo構(gòu)建內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Rust實現(xiàn)一個表達式Parser小結(jié)
這篇文章主要為大家介紹了Rust實現(xiàn)一個表達式Parser小結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11
Rust并發(fā)編程之使用消息傳遞進行線程間數(shù)據(jù)共享方式
文章介紹了Rust中的通道(channel)概念,包括通道的基本概念、創(chuàng)建并使用通道、通道與所有權(quán)、發(fā)送多個消息以及多發(fā)送端,通道提供了一種線程間安全的通信機制,通過所有權(quán)規(guī)則確保數(shù)據(jù)安全,并且支持多生產(chǎn)者單消費者架構(gòu)2025-02-02
Rust?Atomics?and?Locks內(nèi)存序Memory?Ordering詳解
這篇文章主要為大家介紹了Rust?Atomics?and?Locks內(nèi)存序Memory?Ordering詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02
Rust 中的 Packages 與 Crates模塊化構(gòu)建的基礎(chǔ)及開發(fā)流程
Rust中的Crate是編譯器處理的最小代碼單元,可以是二進制或庫,每個Crate由一個CrateRoot文件(通常是src/main.rs或src/lib.rs)定義,本文給大家介紹Rust 中的 Packages 與 Crates模塊化構(gòu)建的基礎(chǔ)及開發(fā)流程,感興趣的朋友一起看看吧2025-02-02

