cpp windows+vscode编译环境构建

windows下搭建c++开发环境

1.依赖包准备:

1. 下载vscode & 下载mingw
2. 获取依赖库路径:cmd---> gcc -v -x c++ -E - |C++头文件
						  gcc -v -x c -E - |C头文件
3. 安装c/c++相关扩展包:
* C/C++ Extension Pack |扩展包集-省事直选
* C/C++ |必装
* C++ Intellisense |代码提示与高亮
* CMake |工程编译
* GitLens — Git supercharged |仓库管理
4. 安装其他扩展包
* Chinese (Simplified) Language Pack for Visual Studio Code |中文简体
* Settings Sync |配置同步
* TabOut |tab跳出括号

2.配置说明:

1. c_cpp_properties.json |编译环境
{
"configurations": [
    {
        "name":"MinGW",
        "compilerPath":"C:\\MinGW\\bin\\g++.exe",
        "includePath": [
            "${workspaceFolder}"
        ],
        "defines": [],
        "browse": {
            "path": [
                "${workspaceFolder}"
            ],
            "limitSymbolsToIncludedHeaders":true,
            "databaseFilename":""
        },
        "cStandard":"c11",
        "cppStandard":"c++17"
    }
],
"version": 4
}
2. launch.json |调试配置
{
"version":"0.2.0",
"configurations": [
    {
        "name":"(gdb) Launch",// 配置名称,将会在启动配置的下拉菜单中显示
        "type":"cppdbg",// 配置类型,这里只能为cppdbg
        "request":"launch",// 请求配置类型,可以为launch(启动)或attach(附加)
        "program":"${fileDirname}/${fileBasenameNoExtension}.exe",// 将要进行调试的程序的路径
        "args": [],// 程序调试时传递给程序的命令行参数,一般设为空即可
        "stopAtEntry":false,// 设为true时程序将暂停在程序入口处,我一般设置为true
        "cwd":"${workspaceFolder}",// 调试程序时的工作目录
        "environment": [],// (环境变量?)
        "externalConsole":true,// 调试时是否显示控制台窗口,一般设置为true显示控制台
        "internalConsoleOptions":"neverOpen",// 如果不设为neverOpen,调试时会跳到“调试控制台”选项卡,你应该不需要对gdb手动输命令吧?
        "MIMode":"gdb",// 指定连接的调试器,可以为gdb或lldb。但目前lldb在windows下没有预编译好的版本。
        "miDebuggerPath":"gdb.exe",// 调试器路径,Windows下后缀不能省略,Linux下则去掉
        "preLaunchTask":"build" // 调试会话开始前执行的任务,一般为编译程序。与tasks.json的label相对应
    }
]
}
3. tasks.json |编译配置
{
"version":"2.0.0",
"tasks": [
    {
        "label":"build",// 任务名称,与launch.json的preLaunchTask相对应
        "command":"g++",// 要使用的编译器
        "args": [
            "-g",// 生成和调试有关的信息
            "${file}",
            "-o",// 指定输出文件名,不加该参数则默认输出a.exe,Linux下默认a.out
            "${fileDirname}\\${fileBasenameNoExtension}.exe",
            //"${fileDirname}/${fileBasenameNoExtension}.exe",
        ],// 编译命令参数
        "type":"shell",// 可以为shell或process,前者相当于先打开shell再输入命令,后者是直接运行命令
        "group": {
            "kind":"build",
            "isDefault":true // 设为false可做到一个tasks.json配置多个编译指令,需要自己修改本文件,我这里不多提
        },
        "problemMatcher":{
            "owner":"$gcc",
            "fileLocation":"absolute",
            "pattern":[
                {
                    "regexp":"^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    //"location": 2,
                    "message": 5
                }
            ]
         }
    }
]
}

4.默认变量
${workspaceFolder} :表示当前workspace文件夹路径,也即/home/Coding/Test
${workspaceRootFolderName}:表示workspace的文件夹名,也即Test
${workspaceFolderBasename} - VS Code中打开的文件夹名称,不带任何斜杠(/)
${file}:文件自身的绝对路径,也即/home/Coding/Test/.vscode/tasks.json
${relativeFile}:文件在workspace中的路径,也即.vscode/tasks.json
${relativeFileDirname} - 当前打开文件的目录名(相对于workspaceFolder)
${fileBasename}:当前文件的文件名,tasks.json
${fileBasenameNoExtension}:当前文件的文件名,不带后缀,也即tasks
${fileDirname}:文件所在的文件夹路径,也即/home/Coding/Test/.vscode
${fileExtname}:当前文件的后缀,也即.json
${cwd} - 启动时任务运行程序的当前工作目录
${lineNumber}:当前文件光标所在的行号
${selectedText} - 活动文件中当前选定的文本
${execPath} - VS Code可执行文件的路径
${defaultBuildTask} - 默认构建任务的名称
${env:PATH}:系统中的环境变量

说明:
c++的debug过程是这样的,首先vscode调用launch.json, launch.json根据"preLaunchTask": “gcc build active file”, 的名称调用名为"gcc build active file" 的task.json, task.json中可以有多个task,根据tasks中的label名调用对应的任务。task主要负责进行编译成可执行文件。

部分内容参考自:https://www.cnblogs.com/harrypotterjackson/p/11432252.html
如对本文存疑,欢迎评论交流
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值