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++ 示例共用同一份讲解,遇到系统差异时会在对应位置补充。