Cargo 是 Rust 的構(gòu)建系統(tǒng)和包管理器。
Rust 開發(fā)者常用 Cargo 來管理 Rust 工程和獲取工程所依賴的庫。在上個(gè)教程中我們曾使用 cargo new greeting 命令創(chuàng)建了一個(gè)名為 greeting 的工程,Cargo 新建了一個(gè)名為 greeting 的文件夾并在里面部署了一個(gè) Rust 工程最典型的文件結(jié)構(gòu)。這個(gè) greeting 文件夾就是工程本身。
Cargo 除了創(chuàng)建工程以外還具備構(gòu)建(build)工程、運(yùn)行(run)工程等一系列功能,構(gòu)建和運(yùn)行分別對應(yīng)以下命令:
cargo build cargo run
Cargo 還具有獲取包、打包、高級構(gòu)建等功能,詳細(xì)使用方法參見 Cargo 命令。
Cargo 是一個(gè)不錯(cuò)的構(gòu)建工具,如果使 VSCode 與它相配合那么 VSCode 將會(huì)是一個(gè)十分便捷的開發(fā)環(huán)境。
在上一章中我們建立了 greeting 工程,現(xiàn)在我們用 VSCode 打開 greeting 文件夾(注意不是 nhooo-greeting)。
打開 greeting 之后,在里面新建一個(gè)新的文件夾 .vscode (注意 vscode 前面的點(diǎn),如果有這個(gè)文件夾就不需要新建了)。在新建的 .vscode 文件夾里新建兩個(gè)文件 tasks.json 和 launch.json,文件內(nèi)容如下:
{ ????"version":?"2.0.0", ????"tasks":?[ ????????{ ????????????"label":?"build", ????????????"type":?"shell", ????????????"command":"cargo", ????????????"args":?["build"] ????????} ????] }
{ ????"version":?"0.2.0", ????"configurations":?[ ????????{ ????????????"name":?"(Windows)?啟動(dòng)", ????????????"preLaunchTask":?"build", ????????????"type":?"cppvsdbg", ????????????"request":?"launch", ????????????"program":?"${workspaceFolder}/target/debug/${workspaceFolderBasename}.exe", ????????????"args":?[], ????????????"stopAtEntry":?false, ????????????"cwd":?"${workspaceFolder}", ????????????"environment":?[], ????????????"console":?false ????????}, { ????????????"name":?"(gdb)?啟動(dòng)", ????????????"type":?"cppdbg", ????????????"request":?"launch", ????????????"program":?"${workspaceFolder}/target/debug/${workspaceFolderBasename}.exe", ????????????"args":?[], ????????????"stopAtEntry":?false, ????????????"cwd":?"${workspaceFolder}", ????????????"environment":?[], ????????????"console":?false, ????????????"MIMode":?"gdb", ????????????"miDebuggerPath":?"這里填GDB所在的目錄", ????????????"setupCommands":?[ ????????????????{ ????????????????????"description":?"為?gdb?啟用整齊打印", ????????????????????"text":?"-enable-pretty-printing", ????????????????????"ignoreFailures":?true ????????????????} ????????????] ????????} ????] }
{ "version": "0.2.0", "configurations": [ { "name": "Debug", "type": "gdb", "preLaunchTask": "build", "request": "launch", "target": "${workspaceFolder}/target/debug/${workspaceFolderBasename}", "cwd": "${workspaceFolder}" } ] }
{ "version": "0.2.0", "configurations": [ { "name": "(lldb) 啟動(dòng)", "type": "cppdbg", "preLaunchTask": "build", "request": "launch", "program": "${workspaceFolder}/target/debug/${workspaceFolderBasename}", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "lldb" } ] }
然后點(diǎn)擊 VSCode 左欄的 "運(yùn)行"。
如果你使用的是 MSVC 選擇 "(Windows) 啟動(dòng)"。
如果使用的是 MinGW 且安裝了 GDB 選擇"(gdb)啟動(dòng)",gdb 啟動(dòng)前請注意填寫 launch.json 中的 "miDebuggerPath"。
程序就會(huì)開始調(diào)試運(yùn)行了。運(yùn)行輸出將出現(xiàn)在"調(diào)試控制臺"中:
調(diào)試程序的方法與其它環(huán)境相似,只需要在行號的左側(cè)點(diǎn)擊紅點(diǎn)就可以設(shè)置斷點(diǎn),在運(yùn)行中遇到斷點(diǎn)會(huì)暫停,以供開發(fā)者監(jiān)視實(shí)時(shí)變量的值。