0


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

首言

. 通过使用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文件内容如下:
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里面)
{
    "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。![](https://img-blog.csdnimg.cn/direct/79838b664eec4977a636819e99524051.png)

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

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

标签: vscode c++ ide

本文转载自: https://blog.csdn.net/qq_48383456/article/details/135651139
版权归原作者 是板栗啊 所有, 如有侵权,请联系我们删除。

“利用cmake配置VScode的C++运行与调试环境”的评论:

还没有评论