vscode编译C的相关配置

一、c项目的结构

因为项目中的需要,需要使用c开发一个小工具,安装到硬件设备中。一直做的是java,不太熟悉c,也不清楚用什么工具开发,网上查了一番就使用vscode进行开发,并且使用的tencent的CloudStudio的云端IDE,在线开发可随时启动,底层环境就是linux,省掉了windos下虚拟机安装linux的麻烦。

项目主要结构如下图:
在这里插入图片描述

二、配置文件

这里只记录我在做vscode编译c时的配置,包含下面3个文件:

  1. tasks .json ,编译任务的配置文件;
  2. launch.json ,运行调试的配置文件;
  3. c_cpp_properties.json ,环境配置文件;

我在配置文件tasks .json和launch.json中,各配置了2种配置项,可以直接在linux和window环境下编译和调试,使用了名称进行区分。
c_cpp_properties.json的linux和window环境配置就需要单独配置,不能合在一起,后面放代码。

三、配置文件内容

tasks .json

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "compile", // 对应launch.json中configurations的配置 "preLaunchTask": "compile"
            "command": "gcc",
            "args": [
                "-I",
                "${workspaceFolder}/include", // "-I","头文件路径"
                "-L",
                "${workspaceFolder}/lib", // "-L","库文件路径"
                "-fdiagnostics-color=always",
                "-g",
                "${file}", // 源文件名
                "-lmosquitto",
                "-luci",
                "-o",
                "${workspaceFolder}/out/${fileBasenameNoExtension}" // 编译文件存放的目录
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        },
        {
            "label": "echo", // 对应launch.json中configurations的配置 "preLaunchTask": "echo",
            "type": "shell",
            "command": "gcc",
            "args": [
                "-I",
                "${workspaceFolder}\\include", // "-I","头文件路径"
                "-L",
                "${workspaceFolder}\\lib", // "-L","库文件路径"
                "-fdiagnostics-color=always",
                "-g",
                "${file}", // 源文件名
                "-o",
                "${workspaceFolder}\\out\\${fileBasenameNoExtension}", // 编译文件存放的目录
                "-fexec-charset=GBK" //解决中文乱码
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "presentation": {
        "echo": true,
        "reveal": "always",
        "focus": false,
        "panel": "shared",
        "showReuseMessage": true,
        "clear": false
    }
}

launch.json

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(Linux)调试",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/out/${fileBasenameNoExtension}", // 编译文件存放的目录
            "preLaunchTask": "compile",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "/usr/bin/gdb",
            "miDebuggerArgs": "-q -ex quit; wait() { fg >/dev/null; }; /usr/bin/gdb -q --interpreter=mi",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        },
        {
            "name": "(Windows)调试",
            "type": "cppvsdbg", // window下使用,linux环境下会提示报错,可不用理会
            "request": "launch",
            "program": "cmd",
            "preLaunchTask": "echo",
            "args": [
                "/C",
                "${workspaceFolder}\\out\\${fileBasenameNoExtension}", // 编译文件存放的目录
                //"&",
                //"echo.",
                //"&",
                //"pause"
            ],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "console": "integratedTerminal"
        }
    ]
}

linux下的c_cpp_properties.json

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "cStandard": "c11",
            "cppStandard": "c++11",
            "intelliSenseMode": "linux-gcc-x64",
            "configurationProvider": "ms-vscode.makefile-tools",
            "compilerPath": "/usr/bin/gcc"
        }
    ],
    "version": 4
}

window环境下的c_cpp_properties.json,与linux下的配置区别不大,主要是编译工具的选择和路径配置。
前提:自行安装mingw64,我的widow10下mingw64安装目录为D:\ProgramTools\mingw64,环境变量配置PATH,D:\ProgramTools\mingw64\bin
在这里插入图片描述

{
    "configurations": [
        {
            "name": "win64",
            "includePath": [
                "${workspaceFolder}/**",
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "cStandard": "c17",
            "cppStandard": "c++17",
            "intelliSenseMode": "windows-gcc-x64",
            "configurationProvider": "ms-vscode.makefile-tools",
            "compilerPath": "D:\\ProgramTools\\mingw64\\bin\\gcc"
        }
    ],
    "version": 4
}

注意事项:在配置编译文件存放路径时,根据自身的需要配置路径。上文中,我配置的是out文件夹,则在配置文件中编译和执行的时候,要配置" w o r k s p a c e F o l d e r / o u t / {workspaceFolder}/out/ workspaceFolder/out/{fileBasenameNoExtension}",不然调试时路径不对,会找不到编辑文件。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值