win10下vscode中编译调试C/C++程序的配置过程
插件安装C/C++CMake:可进入官网https://cmake.org/download ,下载可以直接安装的版本:下载后直接运行安装。然后在VSCode应用商店中搜索CMake,点击安装按钮安装即可。安装编译调试环境(MinGW);在Windows系统中配置环境变量:将MinGW\bin添加到Path中去;添加后可以在cmd.exe中验证是否可以使用:gcc和g++为c和c++编译...
插件安装
- C/C++ IntelliSense
- CMake:可进入官网https://cmake.org/download ,下载可以直接安装的版本:下载后直接运行安装。然后在VSCode应用商店中搜索CMake,点击安装按钮安装即可。 单一文件编译的话非必须
安装编译调试环境(MinGW)
在Windows系统中配置环境变量:将MinGW\bin添加到Path中去;添加后可以在cmd.exe中验证是否可以使用:
在cmd中分别敲gcc --version,g++ --version和gdb --version查看输出(gcc和g++为c和c++编译器,gdb是调试所需),如果命令行提示“XXX”不是内部或外部命令,则没有添加成功。
修改配置文件
此时还无法直接调试.c文件,需要添加两个配置文件:
launch.json配置文件:
调试——添加配置——C/C++:(gdb)launch 生成配置文件
配置文件内容如下:
{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Launch (GDB)", // 配置名称,将会在启动配置的下拉菜单中显示
"type": "cppdbg", // 配置类型,这里只能为cppdbg
"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
"program": "${workspaceRoot}/${fileBasenameNoExtension}.exe", // 将要进行调试的程序的路径
"args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,一般设置为false
"cwd": "${workspaceFolder}", // 调试程序时的工作目录,一般为${workspaceRoot}即代码所在目录
"environment": [], //
"externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台
"MIMode": "gdb",
"miDebuggerPath":"D:\\MinGW\\bin\\gdb.exe", // miDebugger的路径,注意这里要与MinGw的路径对应
"preLaunchTask": "g++", //调试会话开始前执行的任务,一般为编译程序,C++为g++,C为gcc
"setupCommands":[
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
注:miDebuggerPath的路径要使用'/'或者'\\',或者直接写成gdb.exe也可以(path已经配置gdb.exe的路径)。
tasks.json配置文件:
保存launch.json以后,然后切换到要调试的文件窗口,比如main.c,然后按F5开始调试,会提示找不到g++任务,此时可以点击“配置任务”添加配置文件:
终端—配置任务—使用模板创建tasks.json文件—选择:“Others 运行任意外部命令的示意”生成配置文件
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "g++", //可以改成gcc,但是要跟lunch中的preLaunchTask一致
"type": "shell",
"command": "g++", //可以改成gcc
"args": ["-g", "${file}", "-o", "${fileBasenameNoExtension}.exe"],
"problemMatcher": {
"owner": "cpp",
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
},
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
注:(1)该tasks.json用于编译一个文件,可以使用ctrl+shift+b单独编译。
(2)launch.json包含了编译和调试,即先调用gcc完成编译,然后调用gdb进行调试。
注意:label的名字必须为g++,即与launch.json中的preLaunchTask的值保持一样。
该task.json用于编译一个文件,可以使用ctrl+shift+b单独编译。
launch.json包含了编译和调试,即先调用g++完成编译,然后调用gdb进行调试。
保存task.json,切换到需要调试的文件,再次按F5启动调试,就可以看到调试效果啦。
c_cpp_properties.json配置文件:
如果相关库头文件找不到,可以添加c_cpp_properties.json配置文件来添加MinGW提供的include路径
Ctrl+Shift+P:搜索c/c++:Edit cnfigurations(JSON),点击生成c_cpp_properties.json配置文件
{
"configurations": [
{
"name": "Win32",
"includePath": [
"D:\\MinGW\\include\\*",
"D:\\MinGW\\lib\\gcc\\mingw32\\5.3.0\\include\\*"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.17763.0",
"compilerPath": "D:\\MinGW\bin\\gdb.exe",
"cStandard": "c11",
"cppStandard": "c++17"
}
],
"version": 4
}
完成上述步骤后切换到需要调试的文件,再次按F5启动调试,就可以看到调试效果啦。
CMake工具使用make命令
如果在目录中放置一个CMakeLists.txt
CMAKE_MINIMUM_REQUIRED(VERSION2.6) #cmake最低版本需求,不加入此行会受到警告信息
PROJECT(HELLO) #项目名称
AUX_SOURCE_DIRECTORY(.SRC_LIST) #把当前目录(.)下所有源代码文件和头文件加入变量SRC_LIST
ADD_EXECUTABLE(hello${SRC_LIST}) #生成应用程序 hello (在windows下会自动生成hello.exe)
在VSCode中打开这个目录,会自动创建CMake相关的文件和目录,这实际上就是前面安装的两个插件在帮助我们做一些自动化工作。
要使用此功能需要先做如下准备工作:
将MinGW\bin\mingw32-make.exe这个文件复制一份,并改名为make.exe,以方便后续CMake工具使用make命令。
完成后就可以打开工程,在命令行窗口进行构建:
创建build文件夹并进入
在命令行输入: cmake .. -G "MinGW Makefiles" -D "CMAKE_CXX_FLAGS=-std=gnu++11 -Wno-deprecated-declarations" 来生成makefile,然后再make生成可执行文件。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)