利用cmake配置VScode的C++运行与调试环境

是板栗啊 2024-08-07 14:05:01 阅读 56

首言

.        通过使用CMake工具,我们可以方便地配置VS Code的C++运行和调试环境。CMake提供了一种跨平台的方式来生成构建文件,使得我们可以将项目与VS Code无缝集成,并通过简单的设置,轻松地实现编译、运行和调试C++代码的功能。本文将介绍如何使用CMake配置VS Code的C++环境,并详细说明设置运行和调试选项的步骤。cmake和编译器的安装不做介绍。

        本文是对学习苏丙榅大佬的投稿总结,并运用于多线程socket编程的实践:基于CMake的VSCode下的 C/C++环境搭建_Window篇_哔哩哔哩_bilibili

项目结构

        以下是基本文件结构:

其目标是生成一个基于线程池实现的socket服务器。main函数位于TcpServerThreadPool.cpp中,该文件调用其他文件。

cmake实现程序编译运行

        1. 在你的C++项目根目录中创建一个CMakeLists.txt文件,并添加项目的配置信息。注意:该文件的名称不能写错!本项目的CMakeLists.txt文件内容如下:

<code>cmake_minimum_required(VERSION 3.22) #指定camke最低版本

project(Server_ByThreadPool) #指定项目名称

set(CMAKE_C_COMPILER gcc) #设置编译器

set(CMAKE_CXX_COMPILER g++)

set(CMAKE_CXX_STANDARD 11) #设置c++版本

aux_source_directory(ThreadPool_cpp SRC_ThreadPool) #获取项目中涉及的源文件

aux_source_directory(Server SRC_Server)

include_directories(ThreadPool_cpp)#导入库

include_directories(Server)

find_package(Threads REQUIRED) #寻找系统安装的pthread库

add_executable(TCPServer ${SRC_ThreadPool} ${SRC_Server}) #生成可执行文件

target_link_libraries(TCPServer Threads::Threads ws2_32) #链接到可执行文件中

        2.按下Ctrl+shift+P,输入并选择cmake:Configure,在弹出的框中选择你的编译器。

当得到如下输出并生成了build文件夹之后,说明cmake配置成功了。

        3.进入build文件夹,在当前目录的上一级目录中执行CMake构建。CMake可以根据项目的配置信息生成适用于不同构建系统(如Makefile、Visual Studio解决方案等)的构建系统文件,这些文件定义了项目的编译、链接、安装等过程。

        在vscode中新建一个terminal,分别输入以下命令:cd build 和 cmake ..   注:如果输入cmake报错,可以尝试输入:cmake .. -G "MinGW Makefiles"

        4.继续输入mingw32-make。在当前目录下查找生成的Makefile文件,并利用MinGW编译器进行项目的编译。文件存储在build文件夹中,找到这个文件就可以运行了,后续的运行不再展示。

利用cmake配置调试环境

        1.界面打开main函数在的源文件这个很重要,否则可能无法成功生成task.json

        2.选择Terminal->configure Tasks,并选择一个编译器来生成task.json(这里到后面会替换掉task.json的内容,所以选择哪一个都差不多,不过还是建议选择自己稳定装好的编译器)

        3.将task.json 中的内容替换为以下内容,这是一个利用camke进行编译的命令模板:(详细的每一步解释可以参考上面链接中的教程P5里面)

<code>{

"version": "2.0.0",

"options": {

"cwd": "${workspaceFolder}/build/"

},

"tasks": [

{

"label": "cmake", //camke ..命令

"type": "shell",

"command": "cmake",

"args": [

".."

]

},

{

"label": "make", //mingw32-make.exe命令

"group":{

"kind":"build",

"isDefault":true

},

"command": "mingw32-make.exe",

"args":[

]

},

{

"label":"C/C++: g++.exe 生成活动文件", //运行前面两个任务

"dependsOn":[

"cmake",

"make"

]

}

]

}

        4.点击左边的三角形(从上往下数第四个),点击create a lunch.json file。

选择一个编译器(这里选择GDB/LLDB)得到Launch.json文件

        5.将launch文件中的内容替换为以下内容,其中需要修改一部分内容,需修改的部分打了注释。这段配置的作用是通过GDB调试器调试指定路径中的TCPServer.exe可执行文件。在启动调试前,会先执行名为"C/C++: g++.exe 生成活动文件"的任务。

<code>{

// Use IntelliSense to learn about possible attributes.

// Hover to view descriptions of existing attributes.

// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387

"version": "0.2.0",

"configurations": [

{

"name": "g++.exe - 生成和调试活动文件",

"type": "cppdbg",

"request": "launch",

"program": "${workspaceFolder}\\build\\TCPServer.exe", //可执行程序的完整路径,TCPServer替换为CmakeList文件中指定的程序名称

"args": [],

"stopAtEntry": false,

"cwd": "F:\\study_app\\MinGW\\x86_64-8.1.0-release-win32-seh-rt_v6-rev0\\mingw64\\bin", //编译器路径

"environment": [],

"console": "externalTerminal",

"MIMode": "gdb",

"miDebuggerPath": "F:\\study_app\\MinGW\\x86_64-8.1.0-release-win32-seh-rt_v6-rev0\\mingw64\\bin\\gdb.exe", //GDB调试器的路径。

"setupCommands": [

{

"description": "为 gdb 启用整齐打印",

"text": "-enable-pretty-printing",

"ignoreFailures": true

}

],

"preLaunchTask": "C/C++: g++.exe 生成活动文件" //指定在运行调试之前需要调用的生成活动文件的task任务,这个要与task.json文件中第三个任务的名称相同

}

]

}

        6.配置成功后打完断点就可以按F5快速调试了,图为调试状态



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。