使用VSCode和CMake构建跨平台的C/C++开发环境

本文介绍如何在VSCode中利用MinGW、CMake及Make搭建C/C++开发环境,涵盖CMakeLists.txt文件编写、跨平台编译流程及调试技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发工具

MinGW

MinGW 提供了一套简单方便的Windows下的基于GCC 程序开发环境。MinGW 收集了一系列免费的Windows 使用的头文件和库文件;同时整合了GNU ( http://www.gnu.org/ )的工具集,特别是GNU 程序开发工具,如经典gcc, g++, make等。MinGW是完全免费的自由软件,它在Windows平台上模拟了Linux下GCC的开发环境,为C++的跨平台开发提供了良好基础支持,为了在Windows下工作的程序员熟悉Linux下的C++工程组织提供了条件。

CMake

make

在VSCode中编写C++程序,只能编译一个源文件,如果需要同时编译多个源文件,那么就需要批处理工具——CMake工具或者Clion(专业的);
make工具可以看成是一个智能的批处理工具,它本身并没有编译和链接的功能,而是用类似于批处理的方式——通过调用makefile文件中用户指定的命令来进行编译和链接的

makefiles

一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,也可以执行操作系统的命令。
make需要按照makefile中的命令执行!
makefile命令中就包含了调用许多编译器(如我们这里多用到的gcc编译器)去编译某个源文件的命令。
人总是“懒惰的”,makefile在一些简单的工程完全可以人工手写,但是当工程非常大的时候,手写makefile也是非常麻烦的,如果换了个平台makefile又要重新修改。因此我们引入了cmake。

cmake

你或许听过好几种 Make 工具,例如 GNU Make ,QT 的 qmake ,微软的 MS nmake,BSD Make(pmake),Makepp,等等。这些 Make 工具遵循着不同的规范和标准,所执行的 Makefile 格式也千差万别。这样就带来了一个严峻的问题:如果软件想跨平台,必须要保证能够在不同平台编译。而如果使用上面的 Make 工具,就得为每一种标准写一次 Makefile ,这将是一件让人抓狂的工作。

CMake就是针对上面问题所设计的工具:它首先允许开发者编写一种平台无关的 CMakeList.txt 文件来定制整个编译流程,然后再根据目标用户的平台进一步生成所需的本地化 Makefile 和工程文件,如 Unix 的 Makefile 或 Windows 的 Visual Studio 工程。从而做到“Write once, run everywhere”。显然,CMake 是一个比上述几种 make 更高级的编译配置工具。一些使用 CMake 作为项目架构系统的知名开源项目有 VTK、ITK、KDE、OpenCV、OSG 等。

CMake这个名字是cross platform make的缩写。虽然名字中含有“make”,但是CMake和Unix上常见的“make”系统是分开的,而且更为高阶。

CMake可以更加简单的生成makefile文件给上面的make用。当然CMake还可以跨平台生成对应平台能用的makefile,你不用再自己去修改了。

一般使用 CMake 生成 Makefile 并编译的流程如下:

  1. 编写 CMake 配置文件 CMakeLists.txt
  2. 执行命令 cmake PATH 或者 ccmake PATH 生成 Makefile(ccmake 和 cmake 的 区别在于前者提供了一个交互式的界面),其中, PATH 是 CMakeLists.txt 所在的目录
  3. 使用 make 命令进行编译

CMake生成makefile的原理

cmake生成makefile的原理是根据一个叫CMakeLists.txt文件(学名:组态档)去生成makefile。当然CMakeLists.txt就需要你自己去手写了!

编写CMakeLists.txt文件是重点

一个简单的CMakeLists.txt如下所示,:

# cmake最低版本号要求
cmake_minimum_required (VERSION 2.8)
# 设置PROJECT_NAME变量
set(PROJECT_NAME Breakout)
# 设置工程名
project (${PROJECT_NAME})
# 查找当前目录下的所有源文件并存入DIR_SRCS变量
aux_source_directory(src DIR_SRCS)
# 添加一个可编译的目标到工程
add_executable (${PROJECT_NAME} ${DIR_SRCS})

具体规则可以参考这篇文章

开发流程

1、下载安装 VSCode

2、下载安装 MinGW

3、下载安装 CMake

4、在VSCode里面安装插件:C/C++,CMake,CMake Tools

5、VSCode中配置CMake
一般刚安装CMake插件后 会自动提示你选择一个编译工具链,如果没有提示或者想更换其他编译工具链,那么可以通过ctrl+shifl+p,输入以下指令,然后在弹出框中选择自己安装的编译工具链。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
6、CMake使用
现在我们建立一个目录,结构如下:

.
├── build
├── CMakeLists.txt
└── main.cpp
└── point.cpp
└── circle.cpp

在这编写两个文件,一个是测试程序(main.cpp),一个是CMakeLists.txt。

然后进入build目录,执行cmake

cd Build/
cmake -G "MinGW Makefiles" ..
# 或者cmake -G "Unix Makefiles" ..

或者通过如下图所示执行cmake在这里插入图片描述

在这里插入图片描述
在build文件夹产生了很多文件,并且包括Makefile文件。

在这里插入图片描述
此时,我们使用make命令,就能编译我们的程序了。并且能得到运行结果。
在这里插入图片描述
注意:

  1. CMakeLists.txt 文件中的这行代码 如果你要debug的时候就写上 否则不要写,编译的时候会报错

#set (CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -g”)

  1. 需要在MinGW安装路径下进行操作,本来只有mingw32-make.exe文件,你需要复制一份改名为make.exe,只有这样才能在终端使用 make 命令操作,如下图:
    在这里插入图片描述

编写调试C/C++程序

编写、修改配置文件:

  • c_cpp_properties.json  指定编译器路径
  • tasks.json  指定如何构建可执行文件
  • launch.json  指定调试器设置
<think>好的,我需要向用户介绍在Linux系统下使用VSCodeCMake来管理编译C/C++工程。首先,我得理清楚整个流程,确保步骤正确且易于理解。 用户可能对VSCodeCMake不太熟悉,所以需要从基础开始。首先,安装必要的软件:VSCodeCMake编译工具链(比如GCC)。然后,配置VSCode的插件,比如C/C++扩展CMake Tools,这些插件能简化操作。 接下来,工程结构的组织很重要。通常CMake项目会有src、include、build等目录,需要说明如何创建CMakeLists.txt文件,并编写基本的CMake配置,比如项目名称、C++标准、添加可执行文件等。 然后,在VSCode中配置CMake,设置生成器(比如Unix Makefiles),选择编译类型(Debug/Release)。还要说明如何通过CMake Tools插件来配置、构建运行项目,可能涉及tasks.jsonlaunch.json的配置,但如果有插件的话,可能不需要手动设置这些。 另外,调试配置也是关键。需要确保调试器(如GDB)安装,并在VSCode中设置launch.json,以便能够断点调试。可能还要提到如何管理多个构建目标,处理依赖库的情况,或者如何添加外部库。 需要注意常见的错误,比如CMake找不到编译器,路径设置问题,或者插件配置不正确。还要提醒用户保持CMakeLists.txt的正确语法,避免低级错误。 最后,可以给出一个简单的例子,演示从创建项目到编译运行的完整流程,帮助用户更好地理解。可能还需要提到一些进阶内容,比如使用CTest进行测试,或者CPack打包,但根据用户需求,可能先集中在基础部分。 需要确保步骤清晰,语言通俗,避免专业术语过多,或者解释清楚术语。同时,检查是否有遗漏的环节,比如环境变量设置,或者权限问题,比如build目录的写入权限。另外,可能还要提到如何清理构建文件,重新编译等常见操作。 总之,结构大概分为安装准备、项目结构、CMake配置、VSCode设置、构建与调试、常见问题等部分。需要一步步引导用户完成整个过程,确保他们能够顺利搭建起开发环境。</think>以下是在Linux系统下使用VSCode配合CMake管理C/C++工程的详细指南: --- ### 一、环境准备 1. **安装必要工具** ```bash sudo apt update sudo apt install g++ cmake make gdb # 安装编译器、构建工具调试器 ``` 2. **安装VSCode** ```bash sudo snap install code --classic # 通过snap安装 ``` 3. **安装扩展** - 在VSCode中搜索安装: - `C/C++` (Microsoft官方扩展) - `CMake` (CMake语法支持) - `CMake Tools` (CMake集成工具) --- ### 二、项目结构 典型CMake工程结构: ``` my_project/ ├── CMakeLists.txt # 主配置文件 ├── include/ # 头文件目录 │ └── utils.h ├── src/ # 源代码目录 │ ├── main.cpp │ └── utils.cpp └── build/ # 构建目录(建议空目录) ``` --- ### 三、配置CMakeLists.txt 基础模板示例: ```cmake cmake_minimum_required(VERSION 3.10) project(MyProject VERSION 1.0 LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) # 设置C++标准 include_directories(include) # 添加头文件目录 add_executable(${PROJECT_NAME} src/main.cpp src/utils.cpp ) ``` --- ### 四、VSCode操作流程 1. **打开项目目录** ```bash code my_project/ # 通过终端启动 ``` 2. **配置CMake** - 按 `Ctrl+Shift+P` 输入 `CMake: Configure` - 选择编译器(如GCC) - 选择构建类型(Debug/Release) 3. **构建项目** - 点击底部状态栏的 `Build` 按钮 - 或按 `F7` 快捷键 4. **运行程序** - 点击状态栏的 `运行` 三角按钮 - 或终端执行: ```bash ./build/MyProject ``` --- ### 五、调试配置 1. **创建调试配置** - 点击左侧调试图标 -> 创建launch.json - 选择 `C++ (GDB/LLDB)` 2. **修改launch.json** ```json { "configurations": [{ "name": "C++ Debug", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/build/MyProject", "args": [], "cwd": "${workspaceFolder}", "environment": [] }] } ``` 3. **设置断点后按 `F5` 启动调试** --- ### 六、高级技巧 1. **多目标管理** ```cmake # 添加库 add_library(utils STATIC src/utils.cpp) # 链接库 target_link_libraries(${PROJECT_NAME} utils) ``` 2. **外部依赖** ```cmake find_package(OpenCV REQUIRED) include_directories(${OpenCV_INCLUDE_DIRS}) target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS}) ``` 3. **常用命令 ```bash # 清理构建 rm -rf build/ && mkdir build # 生成编译数据库(用于代码补全) cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 .. ``` --- ### 七、常见问题 1. **CMake找不到编译器** - 检查 `g++ --version` 是否安装 - 确认VSCode选择的Kit正确 2. **头文件无法识别** - 检查 `include_directories()` 路径 - 重新运行 `CMake: Configure` 3. **链接错误** - 检查 `target_link_libraries()` 是否遗漏库 - 确认库文件路径正确 --- 通过以上步骤,您可以在Linux下高效管理C/C++项目。CMake跨平台特性结合VSCode的便捷性,能显著提升开发效率。建议从简单项目开始实践,逐步掌握更复杂的配置技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值