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工程模板。
