VSCode使用02--.vscode文件夹下配置文件详解

1、vscode中的变量

https://code.visualstudio.com/docs/editor/variables-reference 

预定义变量

${workspaceFolder} - /home/your-username/your-project

${workspaceFolderBasename} - your-project

${file} - /home/your-username/your-project/folder/file.ext

${relativeFile} - folder/file.ext

${relativeFileDirname} - folder

${fileBasename} - file.ext

${fileBasenameNoExtension} - file

${fileDirname} - /home/your-username/your-project/folder

${fileExtname} - .ext

${lineNumber} - line number of the cursor

${selectedText} - text selected in your code editor

${execPath} - location of Code.exe

当预定义变量满足不了使用需求时,可以在 VSCode 中设置自定义变量,并通过 ${config:Name} 的方式调用

2、如何设置自定义变量

自定义变量可以在 settings.json 中配置,即 VSCode 的 setting 文件。VSCode 设置分为 “用户配置” 和 “工作区配置”

对应的 settings.json 也有两个。对于通用配置,可以在 “用户配置” 中添加;而针对于工作区的特殊情况,则可以在 “工作区配置” 中添加。

2、配置文件详解

launch.json介绍 

{
    "version": "0.2.0", //版本信息
    "configurations": [
        {
        },
        {
            // 配置名称,将会在启动配置的下拉菜单中显示
            "name": "C++ Launch (GDB)",
            // 配置类型,这里只能为cppdbg
            "type": "cppdbg",
            // 请求配置类型,可以为launch(启动)或attach(附加)
            "request": "launch",
            // 调试器启动类型,这里只能为Local
            "launchOptionType": "Local",
            // 生成目标架构,一般为x86或x64,
            // 可以为x86, arm, arm64, mips, x64, amd64, x86_64               
            "targetArchitecture": "x86", 
            // 将要进行调试的程序的路径               
            "program": "${workspaceRoot}",
            // 程序调试时传递给程序的命令行参数,一般设为空即可 
            "args": [], 
            // 指定连接的调试器,可以为gdb或lldb。但目前lldb在windows下没有预编译好的版本。
            "MIMode": "gdb",
            // miDebugger的路径,注意这里要与MinGw的路径对应 
            "miDebuggerPath":"D:\\mingw\\bin\\gdb.exe",
            // 设为true时程序将暂停在程序入口处,一般设置为false                                
            "stopAtEntry": false,
            // 调试程序时的工作目录,一般为${workspaceRoot}即代码所在目录                       
            "cwd": "${workspaceRoot}",
            // (环境变量?)
            "environment": [],
            // 调试时是否显示控制台窗口,一般设置为true显示控制台                
            "externalConsole": true,
            // 如果不设为neverOpen,调试时会跳到“调试控制台”选项卡,你应该不需要对gdb手动输命令吧?
            "internalConsoleOptions": "neverOpen",
            // 用处未知,模板如此 
            "setupCommands": [ 
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": false
                }
            ],
            // 调试会话开始前执行的任务,一般为编译程序。与tasks.json的label相对应                   
            "preLaunchTask": "g++"
        }    
    ]
}

launch.json示例:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "cctest",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/bin/cctest",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "D:/wecode_build_tools/mingw/bin/gdb.exe",
            "preLaunchTask": "Build",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        },
        {
            "name": "test_cctest",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/bin/test_cctest",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "D:/wecode_build_tools/mingw/bin/gdb.exe",
            "preLaunchTask": "Build",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

task.json介绍

{
    "version": "2.0.0",
    //每次执行都启动一个新的控制台
    "presentation": {
        "reveal": "always",
        "panel": "new",
        "echo": true
    },
    //设置环境变量
    "options": {
        "env": {
            "LINUX_SRC_HOME": "/home/user/system/packages/services/Car/evs",
            "LOCAL_SRC_HOME": "${workspaceRoot}"
        }
    },
    "type": "shell",
    "problemMatcher": {
        "owner": "vs_code",
        "fileLocation": [
            "relative",
            "${workspaceRoot}"
        ],
        "pattern": {
            "regexp": ".*(app/.*|project/.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
            "file": 1,
            "line": 2,
            "column": 3,
            "severity": 4,
            "message": 5
        }
    },
    //任务列表
    "tasks": [
        {
            "label": "01.[同步代码]本地代码->Linux远程服务器",
            "command": "${workspaceRoot}\\.vscode\\sync_code.cmd",
            "args": [
                "native",
                "False"
            ],
            "identifier": "CodeSync",
            "taskClassify": "同步代码"
        },
		
        {
            "label": "02.[同步代码并获取修改文件列表]本地代码-->Linux远程服务器",
            "command": "${workspaceRoot}\\.vscode\\sync_code.cmd",
            "args": [
                "native",
                "True"
            ],
            "identifier": "CodeSyncDiff",
            "taskClassify": "同步代码"
        },	
		
        {
            "label": "03.[编译IT]在Linux远程服务器上编译IT工程",
            "dependsOn": "CodeSync",
            "command": "${workspaceRoot}\\.vscode\\build_obj.cmd",
            "args": [
                "test",
                "DTCenter.out",
                "it_cfg",
                "Debug",
                "-j8",
                "cache"
            ],
            "taskClassify": "编译IT工程"
        },
        {
            "label": "04.[同步+编译+IT]在Linux远程服务器上构建IT工程并运行",
            "dependsOn": "CodeSync",
            "command": "${workspaceRoot}\\.vscode\\build_and_run_IT.cmd ratmng.nrom.cfgslave",
            "taskClassify": "同步+编译+IT工程"
        },     
        {
            "label": "05.[静态检查]代码静态检查",
            "dependsOn": "CodeSyncDiff",
            "command": "${workspaceRoot}\\.vscode\\inc_build_flint.cmd",
            "taskClassify": "flint"
        },
        {
            "label": "06.[增量构建] 代码增量compile",
            "dependsOn": "CodeSyncDiff",
            "command": "${workspaceRoot}\\.vscode\\inc_build_compile.cmd",
            "taskClassify": "增量编译"
        }
    ]
}

task.json示例

{
    "version": "2.0.0",
    "options": {
        "cwd": "${workspaceRoot}",
        "env": {
            "PATH": "D:\\wecode_build_tools\\mingw\\bin;${env:PATH}"
        },
        "shell": {
            "executable": "${env:SystemRoot}\\System32\\cmd.exe",
            "args": [
                "/C"
            ]
        }
    },
    "problemMatcher": "$wecodeCpp",
    "type": "shell",
    "tasks": [
        {
            "label": "Configure this project",
            "command": "cmake.exe -DCMAKE_TOOLCHAIN_FILE=..\\cmake\\toolchain.cmake -S . -B .\\build -G Ninja",
            "detail": "Build之前必须先执行此Config命令,生成Ninja构建工程,否则会出错"
        },
        {
            "label": "Build",
            "command": "cmake --build build --target all",
            "dependsOn": [
                "Configure this project"
            ],
            "detail": "执行增量的构建"
        },
        {
            "label": "Rebuild all",
            "command": "cmake --build build --target all --clean-first --",
            "dependsOn": [
                "Configure this project"
            ],
            "detail": "重新执行所有构建"
        },
        {
            "label": "Clean Build",
            "command": "cmake --build build --target clean --",
            "detail": "删除构建过程中的所有中间文件"
        },
        {
            "label": "Run",
            "command": ".\\bin\\cctest.exe",
            "detail": "执行编译出来的目标程序"
        },
        {
            "label": "Build & Run",
            "dependsOrder": "sequence",
            "dependsOn": [
                "Build",
                "Run"
            ],
            "detail": "执行增量构建并运行目标程序"
        },
        {
            "label": "Open Shell for mingw",
            "command": "cmd.exe",
            "detail": "打开mingw的Shell 窗口"
        },
        {
            "label": "Run test",
            "command": "cd build && cmake --build . --target all && ctest -j14 -C Debug -T test --verbose",
            "detail": "执行测试"
        }
    ]
}

参考链接:https://code.visualstudio.com/docs/editor/tasks#vscode

在VS Code中,配置文件用于指定如何编译和调试C++代码。以下是几个常见的配置文件及其作用: 1. task.json:用于告诉VS Code如何编译.cpp文件。通过选择Terminal > Configure Default Build Task,并选择g++.exe build active file,可以在.vscode文件夹中创建一个tasks.json文件。这个文件中定义了编译器的路径和编译选项,以及生成可执行文件的方法。\[1\] 2. launch.json:用于配置VS Code启动GDB调试器来调试程序。通过选择Run > Add Configuration...,然后选择C++ (GDB/LLDB),可以创建一个launch.json文件。在这个文件中,可以选择预定义的调试配置文件,如g++.exe build and debug active file,或者自定义调试配置。\[1\] 3. c_cpp_properties.json:用于更多地控制C/C++扩展。可以在命令面板中执行C/C++: Edit Configurations(UI)命令来查看C/C++的配置界面。在这个文件中,可以更改编译器的路径、C++标准等设置。\[1\] 4. settings.json:用于配置VS Code的其他设置。可以在这个文件中定义各种变量,如file、{file}、fileBasename等,以及其他一些设置。\[2\] 总结起来,task.json用于配置编译选项,launch.json用于配置调试选项,c_cpp_properties.json用于更多地控制C/C++扩展,settings.json用于配置其他设置。这些配置文件可以通过VS Code的界面或者直接编辑文件来进行修改。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* *3* [VSCode中C/C++配置文件解读(未完)](https://blog.csdn.net/weixin_42442319/article/details/127326468)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值