vscode同时使用(msvc)cl.exe与(MingW)g++.exe编译c++文件

在网上查了一圈都没找到我想要的,自己折腾一番成功了,特此记录下来供大家参考。

vscode下载和安装都很简单,聪明的你一看就会。本文重点介绍如何使用vscode在同一个c++项目内自由切换使用微软msvc的cl.exe和MingW的g++.exe编译器来编译调试,以方便学习不同编译器的差别。我只用了这两款编译器,其他的编译器可能设置方法大同小异。

最终效果:
vscode同时使用(msvc)cl.exe与(MingW)g++.exe编译c++文件_第1张图片这是一个cpp源文件hello.cpp和两款编译器都编译过后的其他所有文件,hello.cpp内容不重要,是我学cpp的小练习。。。
vscode同时使用(msvc)cl.exe与(MingW)g++.exe编译c++文件_第2张图片这是用cl.exe的编译效果
vscode同时使用(msvc)cl.exe与(MingW)g++.exe编译c++文件_第3张图片这是同一个项目用g++.exe的编译效果

操作要点:
0.基本前提是你电脑中要有cl.exe(vs2019或更早版本自带)、g++.exe(codeblocks自带、devcpp自带,或者下载MingW自行安装)。
1.由于cl的复杂特性,每次打开c++项目必须用vs的命令行编辑器用code 项目文件夹来打开vscode,如
vscode同时使用(msvc)cl.exe与(MingW)g++.exe编译c++文件_第4张图片若不这么打开,可能无法使用cl编译器,g++不受此影响。
2.修改你的c++项目中的tasks.json和launch.json,分别添加相应代码:
tasks.json:

{
    "tasks": [
        {	// 对应cl.exe
            "type": "shell",
            "label": "cl.exe build active file",
            "command": "cl.exe",
            "args": [	// cl的编译选项,自行设置
                "/Zi",
                "/EHsc",
                "/Fe:",
                "${fileDirname}\\${fileBasenameNoExtension}.exe",
                "${file}"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "presentation": {
                "reveal": "always"
            },
            "problemMatcher": "$msCompile"
        },
        {	// 对应g++.exe
            "type": "shell",
            "label": "g++.exe build active file",
            "command": "D:\\Program Files (x86)\\CodeBlocks\\MinGW\\bin\\g++.exe",
            "args": [	// g++的编译选项,自行设置
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe",
                "-std=c++11",
                "-Wall",
                "-Weffc++",
                "-Wextra",
                "-pedantic"
            ],
            "options": {
                "cwd": "D:\\Program Files (x86)\\CodeBlocks\\MinGW\\bin"		// 换成你自己的相应路径
            }
        }
    ],
    "version": "2.0.0"
}

launch.json:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {   // 对应cl.exe
            "name": "cl.exe build and debug active file",
            "type": "cppvsdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "preLaunchTask": "cl.exe build active file",
            "logging": {	// 用于消除PDB文件找不到打不开问题,来自于https://none53.hatenablog.com/entry/2019/11/28/vsCode_Cannot_find_or_open_the_PDB_file.
                "moduleLoad": false
            }
        },
        {   // 对应g++.exe
            "name": "g++.exe build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "D:\\Program Files (x86)\\CodeBlocks\\MinGW\\gdb32\\bin\\gdb32.exe",	// 换成你自己的gdb32.exe的路径
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "g++.exe build active file"
        }
    ]
}

分别保存上面两个文件后,vscode的编译调试栏会出现相应的编译配置:
vscode同时使用(msvc)cl.exe与(MingW)g++.exe编译c++文件_第5张图片

操作步骤总结:
1.按操作要点2的要求修改好tasks.json和launch.json
2.按操作要点1的要求打开vscode
3.任意切换cl或g++进行编译调试c++项目

这是我的第一篇博文,希望能够对你有所帮助

你可能感兴趣的:(vscode同时使用(msvc)cl.exe与(MingW)g++.exe编译c++文件)