Wiki
C++開發環境搭建與測試
本文由簡體中文內容確定性轉換,並受版本化術語表保護。
這一章先不改代碼,只做一件很具體的事:
在你的電腦上把我準備好的 CMake 模板跑起來。
本教程使用同一套 C++ 示例,Linux 和 Windows 只是準備工具、選擇構建預設和運行程序的路徑不同。如果你剛開始學 C++,看到 CMake、Ninja、target_link_libraries 這些名字不用緊張,先按照自己系統對應的步驟把工程跑通。
1.先選擇你的系統
| 你使用的系統 | 從這裏開始 |
|---|---|
| Ubuntu / Debian、Fedora 等 Linux | Linux開發環境搭建與測試 |
| Windows 10 / 11,64 位電腦 | Windows開發環境搭建與測試 |
Linux 使用 GCC;Windows 使用 GCC / MinGW-w64,推薦通過 MSYS2 UCRT64 安裝。Windows 也可以使用已經單獨安裝好的 MinGW-w64、CMake、Ninja 和 Eigen,具體配置放在 Windows 子節裏。
C/C++ 基礎、現代 C++ 和通用 CMake 工程可以使用 Linux 或 Windows 學習。進入後面的 Boost.Asio、串口、TCP/UDP 通信和機械人實踐時,請準備好 Linux 環境,這部分教程統一按 Linux 的操作步驟講解。
這一章只關心兩件事:
- 你的電腦能不能編譯並運行 C++ 工程。
- VSCode 能不能對這個工程下斷點並進入調試。
完整 CMake 模板詳解放在後面的 CMake工程模板。現在不要求你理解全部構建原理,等學到分文件編寫、庫和工程組織時再回來看。
2.本章最終效果
做完對應系統的子節後,你會得到一個名為 hello_cpp 的文件夾,裏面是完整的 CMake 模板工程。
原樣運行模板時,輸出類似:
[lib1] Vector v = 1 2 3
[lib1] Norm = 3.74166
[lib2] Matrix m =
1 2
3 4
[lib2] Determinant = -2
注意:hello_cpp 是 clone 下來的文件夾名,cmake_template 是工程當前生成的程序名,它們不是一回事。
先認識幾個名字:
| 名字 | 先這樣理解 |
|---|---|
g++ |
真正編譯 C++ 代碼的編譯器 |
CMake |
讀取 CMakeLists.txt,生成構建規則 |
Ninja |
按照 CMake 生成的規則執行編譯 |
GDB |
調試器,查看斷點、變量和調用棧時會用到 |
Eigen |
模板原始示例使用的線性代數庫,主要以頭文件形式使用 |
lib1 / lib2 |
模板自帶的兩個示例小庫,本章先不改它們 |
3.後面章節的運行約定
完成環境搭建後,前期練習通常只需要修改:
src/main.cpp
然後在項目根目錄重新構建、運行。根據自己的系統選擇命令。
Linux:
cmake --build --preset linux-debug
./build/linux-debug/src/cmake_template
Windows,PowerShell:
cmake --build --preset windows-debug
./build/windows-debug/bin/cmake_template.exe
也可以直接使用 VSCode CMake Tools 的 Build、Launch 和 Debug 按鈕。兩個系統的操作順序相同,選擇的 preset 分別是 linux-debug、windows-debug。
| 用途 | Linux | Windows |
|---|---|---|
| Debug 預設 | linux-debug |
windows-debug |
| Release 預設 | linux-release |
windows-release |
| Debug 構建目錄 | build/linux-debug |
build/windows-debug |
| 日常運行的程序 | build/linux-debug/src/cmake_template |
build/windows-debug/bin/cmake_template.exe |
| 安裝後的程序 | install/linux-debug/bin/cmake_template |
install/windows-debug/bin/cmake_template.exe |
日常練習直接運行 build 目錄中的程序即可,只有驗證安裝和分發時才需要 install。
4.安裝 VSCode 擴展
兩種系統都使用 VSCode。擴展分工如下,具體安裝和配置步驟見對應系統的子節:
| 擴展 | 作用 |
|---|---|
| CMake Tools | 識別 preset,配置、構建、選擇 target,運行和調試工程 |
| C/C++ | 提供 GDB 等調試器的接入,也可以提供 IntelliSense |
| C/C++ DevTools | 按需要使用的輔助擴展 |
| clangd | 根據 compile_commands.json 提供代碼補全、跳轉和診斷 |
如果用 clangd 做代碼分析,可以保留 C/C++ 的調試功能,同時關閉它的 IntelliSense,避免兩套代碼提示重複。clangd 擴展還需要電腦上有 clangd 程序,這部分也在系統子節中説明。
5.下一步學什麼
先完成自己系統的環境搭建,再進入 C++基礎初識。後面的語法、類、STL 和現代 C++ 示例共用同一份講解,遇到系統差異時會在對應位置補充。