C++開發環境搭建與測試
這一章先不改代碼,只做一件很具體的事:
在 Linux 上把我準備好的 CMake 模板跑起來。
如果你剛開始學 C++,看到 CMake、Ninja、target_link_libraries 這些名字不用緊張。本章不要求你理解它們的全部原理,先照着步驟把工程跑通。等後面學到頭文件、分文件編寫、第三方庫時,再回來看這些內容會更自然。
完整 CMake 模板詳解放在後面的 CMake工程模板。本章只關心兩件事:
- 你的電腦能不能編譯並運行 C++ 工程。
- VSCode 能不能用 F5 調試這個工程。
本章最終效果
做完本章後,你會得到一個名爲 hello_cpp 的文件夾,裏面是完整的 CMake 模板工程。
原樣運行模板時,輸出類似:
[lib1] Vector v = 1 2 3
[lib1] Norm = 3.74166
[lib2] Matrix m =
1 2
3 4
[lib2] Determinant = -2
這一章會按下面的順序來:
- 在 Ubuntu 或 Fedora 上安裝 C++ 開發工具。
- 下載我準備好的 CMake 模板。
- 先原樣運行模板,確認環境沒問題。
- 看一下模板裏哪些文件和後面的學習有關。
- 用 VSCode 按 F5 調試模板程序。
先認識幾個名字,後面看到它們就不會太突然:
| 名字 | 先這樣理解 |
|---|---|
g++ | 真正編譯 C++ 代碼的編譯器 |
CMake | 讀取 CMakeLists.txt,生成構建規則 |
Ninja | 按照 CMake 生成的規則執行編譯 |
GDB | 調試器,VSCode 按 F5 時會用到 |
lib1 / lib2 | 模板裏自帶的兩個示例小庫,本章先不改它們 |
cmake_template | 模板當前生成的可執行程序名 |
注意:hello_cpp 是我們 clone 下來的文件夾名,cmake_template 是這個工程當前生成的程序名。它們不是一回事。
安裝基礎工具
Ubuntu / Debian
sudo apt update
sudo apt install git cmake ninja-build gcc g++ gdb libeigen3-dev
這裏安裝了 libeigen3-dev,是因爲模板原始示例裏用到了 Eigen。先裝上它,模板就能直接跑起來。
Fedora
sudo dnf install git cmake ninja-build gcc gcc-c++ gdb eigen3-devel
| Ubuntu/Debian | Fedora/RHEL | 說明 |
|---|---|---|
| git | git | 版本控制工具 |
| cmake | cmake | CMake 構建工具 |
| ninja-build | ninja-build | Ninja 構建工具 |
| gcc | gcc | C 編譯器 |
| g++ | gcc-c++ | C++ 編譯器 |
| gdb | gdb | GNU 調試器 |
| libeigen3-dev | eigen3-devel | Eigen3 C++ 數值庫開發文件 |
檢查工具是否安裝成功
git --version
cmake --version
ninja --version
g++ --version
gdb --version
這些命令都能輸出版本號,就說明基礎環境已經可用。
安裝VScode
https://code.visualstudio.com/Download

如果是debian系下載deb,如果是rhel系下載rpm.
下載完之後,點擊瀏覽器,找到這個安裝包的文件夾,並在該路徑打開終端。

Debian系:輸入sudo apt install ./code然後按tab按鍵補齊文件名,回車。
RHEL系:輸入sudo dnf install ./code然後按tab按鍵補齊文件名,回車。
例如補齊後的:
sudo dnf install ./code-1.102.1-1752598767.el8.x86_64.rpm

配置VScode
然後打開VScode,在終端輸入下面的命令
code

然後可以配置一個環境單獨給C++環境使用,避免和默認環境衝突。

進行一些設置,按我的來就可以

選中你創建的CMake配置

安裝 VSCode 擴展
建議在 VSCode 裏安裝這些擴展:
- CMake Tools
- C/C++
- C/C++ DevTools
- clangd
它們的分工是:
| 擴展 | 作用 |
|---|---|
| CMake Tools | 識別 CMakePresets.json,執行 configure/build,選擇 target,管理 CMake 工程構建流程 |
| C/C++ | 微軟官方 C/C++ 擴展,提供基礎 IntelliSense、斷點調試、GDB/LLDB 調試配置支持 |
| C/C++ DevTools | C/C++ 擴展的輔助工具,提供更方便的調試信息展示、內存/寄存器/變量查看等增強能力 |
| clangd | 基於 compile_commands.json 提供更準確的代碼補全、跳轉定義、查找引用、診斷提示、重構能力 |
簡單說:
CMake Tools負責構建工程;C/C++和C/C++ DevTools主要負責調試;clangd主要負責代碼提示、跳轉、診斷和重構。
如果你使用 clangd 做代碼提示,建議關閉或弱化 C/C++ 擴展的 IntelliSense,避免兩個語言服務器同時工作導致提示重複或衝突。

clone CMake 模板
git clone https://github.com/tungchiahui/CMake_Template.git hello_cpp
cd hello_cpp
code .
這裏把項目目錄命名爲 hello_cpp。後面所有命令都默認在這個目錄裏執行。
剛開始學習時先不要管 Git 歷史,也不要急着改很多文件。第一步只做一件事:確認這個模板能在你的電腦上運行。
選中你創建的CMake配置

先原樣跑通模板
用命令行方式運行
先不要急着改代碼。按ctrl + ~彈出VScode終端並運行下面三行命令:
cmake --preset linux-debug
cmake --build --preset linux-debug
./build/linux-debug/src/cmake_template
如果輸出類似:
[lib1] Vector v = 1 2 3
[lib1] Norm = 3.74166
[lib2] Matrix m =
1 2
3 4
[lib2] Determinant = -2

說明工程、編譯器、CMake、Ninja、Eigen 都工作正常。到這裏,最麻煩的環境部分就已經過關了。
注意:日常開發時可以直接運行 build 目錄裏的程序,不需要每次 install。
只有在驗證安裝佈局時,才需要:
cmake --install build/linux-debug
./install/linux-debug/bin/cmake_template
出現以下,即成功!
[lib1] Vector v = 1 2 3
[lib1] Norm = 3.74166
[lib2] Matrix m =
1 2
3 4
[lib2] Determinant = -2

用VScode圖形化方式運行
我們要用VScode圖形化方式去運行上面那些命令:
點擊左側邊的CMake:
- 首先要配置
cmake --preset linux-debug,等同於在界面中是點擊Configure按鈕,並選擇Linux Debug:
- 然後
cmake --build --preset linux-debug這個配置會在你配置configure時被自動配置:
然後你要手動點擊左下角的Build按鈕來進行build:
- 然後
./build/linux-debug/src/cmake_template運行這個程序等同於:
先配置程序路徑:
運行程序: Debug是對程序進行debug,而Launch是直接運行程序不debug,除非你有debug需求,一般咱們直接用launch.

除了上面的操作入口,VSCode 底部狀態欄中,Build按鈕旁邊也有Debug和Launch快捷按鈕。選擇好cmake_templatetarget 並完成構建後,可以直接點擊這裏運行或調試程序。
接下來是要講如何把生成產物放進install,一般只有你要發行一個程序之類的才install,平常只用上面的build即可(測試完改回build的配置).
cmake --install build/linux-debug等同於: 在 VSCode 裏按Ctrl+Shift+P,然後輸入CMake: Install.
解釋: 這個命令會調用當前配置的build preset對應的cmake --install <buildDir>。 如果你選擇了 linux-debug preset,它等同於cmake --install build/linux-debug.- 然後
./install/linux-debug/bin/cmake_template運行這個程序等同於: 先配置程序路徑:
運行程序的方式和上面一樣,也是點Debug或者Launch.
模板當前結構
現在看一下模板裏和本章有關的文件。先不用理解每個 CMake 選項,只要知道 src/ 下面放的是代碼:
.
├── CMakeLists.txt
├── CMakePresets.json
├── .vscode/
│ └── launch.json
├── cmake/
│ └── ProjectOptions.cmake
└── src/
├── CMakeLists.txt
├── main.cpp
├── lib1/
│ ├── CMakeLists.txt
│ ├── inc/lib1/eigen3_test.hpp
│ └── src/eigen3_test.cpp
└── lib2/
├── CMakeLists.txt
├── inc/lib2/eigen3_test.hpp
└── src/eigen3_test.cpp
這裏最重要的是:
| 位置 | 作用 |
|---|---|
src/main.cpp | 程序入口,運行時從這裏開始 |
src/lib1/ | 第一個示例小庫 |
src/lib2/ | 第二個示例小庫 |
CMakeLists.txt | 告訴 CMake 這個工程怎麼構建 |
本章只需要認識這些位置,不需要修改它們。
常見問題
找不到 Ninja
報錯類似:
CMake was unable to find a build program corresponding to "Ninja"
安裝:
sudo apt install ninja-build
或:
sudo dnf install ninja-build
找不到 gdb
調試時如果找不到 GDB:
sudo apt install gdb
或:
sudo dnf install gdb
改了 CMakeLists.txt 後構建異常
本章沒有要求修改 CMakeLists.txt。如果你後面章節改了 CMake 文件後構建異常,可以重新 configure:
cmake --fresh --preset linux-debug
或者刪除構建目錄:
rm -rf build/linux-debug
cmake --preset linux-debug
下一步學什麼
本章只是讓你先擁有一個能運行、能調試的小工程。
後面的章節會從 C++ 基礎語法開始講:
- C++ 基礎初識
- 數據類型與數據存放
- 輸入輸出
- 運算符
- 程序流程結構
下一章開始,我們先只改 src/main.cpp。等你學到函數分文件編寫時,再去整理 lib1 / lib2;等你學到工程組織、第三方庫和構建系統時,再回來看 CMake工程模板。