windows配置vscode c/c++开发(倾向于刷题)


过程

  1. 安装vscode
  2. MinGW-w64 - for 32 and 64 bit Windows 稍微往下翻一下,找到MinGW-W64 GCC-5.4.0x86_64-posix-seh安装。为什么是这个版本?因为牛客支持的两种C++编译器分别为C++14(G++5.4.0)C++11(glang 3.9),这里保证与牛客相同
  3. 解压MinGW压缩包到你想安装的路径。添加bin目录到环境变量path中:
    在这里插入图片描述
    win10以下的操作系统需要重启,以生效更改。
  4. 安装vscode插件:
    • C/C++:又名 cpptools,提供Debug和Format功能
    • Code Runner:右键即可编译运行单文件,很方便;但无法Dubug
  5. 新建工程,在工程目录下新建.vscode文件夹,在文件夹下新建launch.jsontasks.jsonc_cpp_properties.json文件:
    在这里插入图片描述
    launch.json内容:
// launch.json
{
    
    
    "version": "0.2.0",
    "configurations": [
        
        {
    
    
            "name": "C++ Launch (GDB)",                 // 配置名称,将会在启动配置的下拉菜单中显示
            "type": "cppdbg",                           // 配置类型,这里只能为cppdbg
            "request": "launch",                        // 请求配置类型,可以为launch(启动)或attach(附加)
            "targetArchitecture": "x64",                // 生成目标架构,一般为x86或x64
            // "program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 将要进行调试的程序的路径
            // "args": [],                                 // 程序调试时传递给程序的命令行参数,一般设为空即可
            // 方法一:防止debug时程序一闪而过的方法
            // "program": "C:/Windows/System32/cmd.exe",
            // "args": [
            // "/K",
            // "${fileDirname}/${fileBasenameNoExtension}.exe"
            // ],
            // 方法二:
            "program": "C:/Windows/System32/cmd.exe",
            "args": [
                "/C",
                "${fileDirname}/${fileBasenameNoExtension}.exe",
                "&",
                "pause"
            ],

            
            "stopAtEntry": false,                       // 设为true时程序将暂停在程序入口处,一般设置为false
            "cwd": "${workspaceRoot}",                  // 调试程序时的工作目录,一般为${workspaceRoot}
            "externalConsole": true,                    // 调试时是否显示控制台窗口,一般设置为true显示控制台
            "internalConsoleOptions": "neverOpen",      // 如果不设为neverOpen,调试时会跳到“调试控制台”选项卡",
            "MIMode": "gdb",                            // 指定连接的调试器
            "miDebuggerPath": "C:/mingw64/bin/gdb.exe", // 调试器路径
            "setupCommands": [
                {
    
    
                    "description": "Enable pretty-printing for GDB",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": false
                }
            ],
            "preLaunchTask": "Compile" 
        }
    ]
}

tasks.json内容:

// tasks.json
{
    
    
    "version": "2.0.0",
    "tasks": [
        {
    
    
            "label": "Compile",
            "command": "g++",
            "args": [
                "${file}",   // 指定编译源代码文件
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}.exe", // 指定输出文件名,不加该参数则默认输出a.exe
                "-O0",      // 优化级别
                "-ggdb3",   // 生成和调试有关的信息
                "-Wall",    // 开启额外警告
                "-static-libgcc",   // 静态链接
                //"-std=c++17",       // 使用c++17标准
                "-std=c++14",       // 使用c++14标准
                "-finput-charset=UTF-8",    //输入编译器文本编码 默认为UTF-8
                "-fexec-charset=GB18030",   //输出exe文件的编码
                "-D _USE_MATH_DEFINES"
            ],

            "problemMatcher": {
    
    
                "owner": "cpp",
                "fileLocation": [
                    "absolute",
                ],
                "pattern": {
    
    
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            },

            "type": "shell",
            
            "group": {
    
    
                "kind": "build",
                "isDefault": true
            },

            "presentation": {
    
    
                "echo": true,
                "reveal": "always", // 在“终端”中显示编译信息的策略,可以为always,silent,never
                "focus": false,
                 "panel": "shared" // 不同的文件的编译信息共享一个终端面板
            },
        }
    ]
}

c_cpp_properties.json内容:


{
    
    
    "configurations": [
        {
    
    
            "name": "MinGW64",
            "intelliSenseMode": "gcc-x64",
            "compilerPath": "C:/mingw64/bin/g++.exe",
            "includePath": [
                "${workspaceFolder}"
            ],
            "cppStandard": "c++14"
        }
    ],
    "version": 4
}

其他问题

  • C++按F5执行程序后一闪而过:
    解决:在launch.json中修改program和args
    在这里插入图片描述
    方法一原理:
    通过 cmd 的参数 “/K” 来实现
    意思是: 是执行完命令后不关闭命令窗口
    方法二原理:
    这个方法主要是通过cmd的参数 “/C” 来实现,它的效果是:“执行字符串指定的命令然后终止”。此外,还可以通过 ”help cmd“来查看所有可用的参数。

TODO:

  • 完善并简化过程
  • 显示程序运行完的时间(不包括输入样例的时间)
  • 最好能自动读取测试样例文件
  • vscode控制台输入字符数有上限,太长的测试用例输入不了,尝试重定向cin之类的操作

相关/参考链接

VSCode C++ 运行结束马上退出, 窗口一闪而过解决办法, 不修改代码 | 文章开头还给了几个微软官方教程,教你如何在vscode上配置c++环境
Get Started with C++ and Mingw-w64 | 官方教程,还教你如何debug

Visual Studio Code 如何编写运行 C、C++ 程序? - 谭九鼎的回答 - 知乎
Visual Studio Code -> VSCode 开发环境搭建 ---- C/C++ 开发环境搭建 及 代码运行(code runner 插件)
vscode for c/c++(ACM配置)

猜你喜欢

转载自blog.csdn.net/a435262767/article/details/105850685