赞
踩
https://www.msys2.org/
点击msys2-x86_64-20240507.exe
下载安装即可。
安装完成MSYS2
之后,打开MSYS2 MINGW64
。
MSYS2 MINGW64
:用来编译Windows平台64位程序MSYS2 MINGW32
:用来编译Windows平台32位程序pacman -Syu
pacman -S gcc
pacman -S make
pacman -S cmake
pacman -S base-devel mingw-w64-x86_64-toolchain
pacman -S cmake
替换为自己的安装路径
C:\msys64\mingw64\bin
gcc --version
g++ --version
mingw32-make --version
新建一个文本文档,然后重命名为mian.c
鼠标右键,通过Code打开。
可以看到,目前C工程项目下,还没有.vscode隐藏目录。隐藏目录下面也没有c_cpp_properties.json、launch.json、 tasks.json和settings.json配置文件。
C/C++ Extension Pack
安装C/C++ Extension Pack
即可。
这个文件是VSCode C/C++扩展(由Microsoft提供)特有的配置文件,用于配置C/C++项目的编译器、标准库路径、编译器选项等。这些设置帮助VSCode提供准确的代码完成功能、语法高亮、错误检查等。
自动生成c_cpp_properties.json配置文件。键盘快捷键Ctrl+Shift+P
,选择C/C++: Edit Configurations (UI)
默认的配置文件
自动生成默认的配置文件内容
修改C/C++ Configurations
内容会自动同步到c_cpp_properties.json
修改C/C++ Configurations
内容如下
选择编译器的路径
IntelliSense" 是一个强大的代码完成助手,它提供了自动完成、代码导航、语法提示、参数信息、快速信息等功能。选择gcc-x64 (legeacy)
C语言和C++语言标准版本选择C11和C++11
c_cpp_properties.json
内容自动同步如下
{ "configurations": [ { "name": "Win32", "includePath": [ "${workspaceFolder}/**" ], "defines": [ "_DEBUG", "UNICODE", "_UNICODE" ], "windowsSdkVersion": "10.0.22621.0", "compilerPath": "C:/msys64/mingw64/bin/gcc.exe", "cStandard": "c11", "cppStandard": "c++11", "intelliSenseMode": "gcc-x64" } ], "version": 4 }
这个文件用于配置VSCode的调试设置,是使用VSCode内置的调试功能(或连接到外部调试器)时必须配置的文件。它指定了调试器的类型、调试目标程序的路径、必要的调试参数等。
自动生成launch.json
配置文件。点击Run and Debug
按钮
点击create a launch.json file
按钮
选择C++ (GDB/LLDB)
生成默认的launch.json
文件
修改内容如下
{ "version": "0.2.0", "configurations": [ { "name": "Launch", // 配置名称 "type": "cppdbg", // 使用cppdbg类型 "request": "launch", // 启动类型请求 "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", // 你的可执行文件路径 "args": ["Hello", "World"], // 如果需要,添加程序参数 "stopAtEntry": false, // 是否在入口点停止 "cwd": "${workspaceFolder}", // 当前工作目录 "environment": [], // 环境变量 "externalConsole": true, // true使用外部控制台,false使用内部控制台 "MIMode": "gdb", // 调试器模式 "miDebuggerPath": "C:/msys64/mingw64/bin/gdb.exe", // gdb路径 "setupCommands": [ // 初始命令 { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "Build", // 如果有构建任务,可以指定 "internalConsoleOptions": "openOnSessionStart" // 控制台选项 } ] }
其中,参数修改如下
miDebuggerPath
:gdb调试程序。需要改为自己的msys64安装路径externalConsole
:是否使用外部控制台输出调试信息。preLaunchTask
:调试之前,构建用于task.json
创建的任务名称这个文件用于配置VSCode的任务运行器,可以定义和配置自动执行的任务,如编译、测试等。这在构建或部署项目时特别有用。
自动生成tasks.json
配置文件。
测试代码
#include <stdio.h> #include <stdlib.h> #include <sys/time.h> #include <time.h> int main(int argc, char *argv[]) { struct timeval tv; // timeval结构用于存储秒和微秒 struct tm* tm_info; // 用于存储本地时间信息 char buffer[40]; // 字符数组,用于存储格式化的时间字符串 int milliseconds; // 存储毫秒部分 time_t time_sec; // 添加一个time_t类型的变量 // 获取当前时间 gettimeofday(&tv, NULL); // 将tv.tv_sec转换为time_t类型 time_sec = (time_t)tv.tv_sec; // 将秒数转换为本地时间 tm_info = localtime(&time_sec); // 将微秒转换为毫秒 milliseconds = tv.tv_usec / 1000; // 格式化时间字符串,年月日时分秒 strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", tm_info); system("chcp 65001 > nul"); // 设置命令行编码为UTF-8并隐藏输出 // 打印格式化的时间和毫秒 printf("当前时间: %s.%03d\n", buffer, milliseconds); printf("There are %d command-line arguments:\n", argc); for (int i = 0; i < argc; i++) { printf("Argument %d: %s\n", i, argv[i]); } // 终端暂停 system("pause"); return 0; }
自动生成settings.json
配置文件。切换到Run and Debug
按钮,点击绿色小箭头或者按键F5调试。
点击configure Task
按钮
选择第二个C/C++: gcc.exe build active file
,对应MSYS2编译器的路径
默认生成的配置文件内容
{ "version": "2.0.0", "tasks": [ { "type": "cppbuild", "label": "C/C++: gcc.exe build active file", "command": "C:/msys64/mingw64/bin/gcc.exe", "args": [ "-fdiagnostics-color=always", "-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe" ], "options": { "cwd": "C:/msys64/mingw64/bin" }, "problemMatcher": [ "$gcc" ], "group": "build", "detail": "compiler: C:/msys64/mingw64/bin/gcc.exe" } ] }
!!!注意,修改label参数,这里的label参数对应了launch.json的preLaunchTask参数.
launch.json
文件内容
tasks.json
文件内容
修改后的tasks.json
文件内容
{ "version": "2.0.0", "tasks": [ { "type": "cppbuild", "label": "Build", "command": "C:/msys64/mingw64/bin/gcc.exe", "args": [ "-fdiagnostics-color=always", "-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe" ], "options": { "cwd": "C:/msys64/mingw64/bin" }, "problemMatcher": [ "$gcc" ], "group": "build", "detail": "compiler: C:/msys64/mingw64/bin/gcc.exe" } ] }
这个文件用于存储VSCode的工作区或用户级的设置。这些设置可以覆盖VSCode的默认行为,包括编辑器的视觉样式、代码格式化规则、插件配置等。
自动生成settings.json
配置文件。键盘快捷键Ctrl+,
,打开Settings
。
切换到Workspace
选择Auto Save
自动保存功能,改为afterDelay
自动保存代码修改。
同时settings.json
文件自动生成,会自动覆盖掉用户设置的功能。
settings.json
配置文件内容文件
切换回main.c代码文件,点击F9在需要停止运行的行打上断点,点击F5开始调试代码。
代码运行到断点出停止,左边可以看到局部变量和寄存器的值。
F5
来继续执行直到下一个断点。如果程序尚未运行,F5
将启动调试会话。不调试,直接运行代码。选择代码文件,点击右上角的小三角按钮旁边的下拉栏,选择Run C/C++ File
。
选择第一个Launch preLaunchTask: Build
,和launch.json
配置文件里面的对应
运行后,程序不会在断点处停止。
可以看到调试后生成的可执行文件。
launch.json
配置文件的preLaunchTask
参数留空或者参数名称和tasks.json
配置文件的label
参数名称不一致。Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。