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

06-20 1266阅读

首言

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

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

项目结构

        以下是基本文件结构:

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

其目标是生成一个基于线程池实现的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,在弹出的框中选择你的编译器。

利用cmake配置VScode的C++运行与调试环境当得到如下输出并生成了build文件夹之后,说明cmake配置成功了。

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

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

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

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

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

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

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

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

利用cmake配置调试环境

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

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

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

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

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

        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。利用cmake配置VScode的C++运行与调试环境

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

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

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

        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快速调试了,图为调试状态

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

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]