马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
概述
固然我这里使用CMake,但是它只是一个用于编译天生可实行文件的工具,完全不影响将工具换成g++,gcc等,这套设置是完全通用的
- 右上角一键编译运行的内部流程
- task.json格式概述
- launch.json格式概述
- CMake格式概述
- 攒起来,组合成通用开辟情况
一键编译运行的内部流程
- 点击运行 C/C++ 文件(或按下F5)
- vscode调用launch.json挑选调试器、根据参数设置运行情况
- 调用task.json天生可实行文件
- 启动调试器,加载用task.json天生的可实行文件
- 开始调试
task.json格式概述
- {
- "label": "CMake: Build",
- "type": "shell",
- "command": "cmake",
- "args": ["../"],
- "options": {
- "cwd": "${workspaceFolder}/build"
- },
- "dependsOn": ["create"]
- },
复制代码 概述
- task.json中,在 “tasks”: [ ] 方括号中的,每一组用 { } 括起来“东西”,都是一个task,也是这个文件真正要去实行的事
- 将一系列task组合起来,就可以实现一个完备的目标(有点类似于shell脚本,只不外shell以指令为单元,task.json以使命为单元)
详细变量表明
- “label” 表现当前使命的名称,
- “type” 表现当前使命的范例,差别范例对应了该使命差别的实行的方式
- “shell”,在终端实行;
- “process”,在一个新的历程中直接实行,常用于克制 shell 特定的举动或情况变量影响
- “customExecution”,使用一个扩展来提供自界说的使命实行逻辑
- “npm”,专门用于实行 npm 脚本
- “command” 表现实行时要使用的指令
- “args” 表现实行指令时要输入的参数
- “cwd” 表现实行该使命的目次
- “dependsOn” 表现该使命依靠于其他什么使命,填入必要在此之前实行完的使命名称
完备task.json
实现了一个完备的打扫build,重新编译天生的全流程- {
- "version": "2.0.0",
- "tasks": [
- {
- "label": "clean",
- "type": "shell",
- "command": "rm",
- "args": ["-r", "build"],
- "options": {
- "cwd": "${workspaceFolder}"
- }
- },
- {
- "label": "create",
- "type": "shell",
- "command": "mkdir",
- "args": ["build"],
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "dependsOn": ["clean"]
- },
- {
- "label": "CMake: Build",
- "type": "shell",
- "command": "cmake",
- "args": ["../"],
- "options": {
- "cwd": "${workspaceFolder}/build"
- },
- "dependsOn": ["create"]
- },
- {
- "label": "make",
- "type": "shell",
- "command": "make",
- "args": [],
- "options": {
- "cwd": "${workspaceFolder}/build"
- },
- "dependsOn": ["CMake: Build"] // make 依赖 CMake 生成 Makefile
- },
- {
- "label": "build",
- "dependsOn": ["clean", "create", "CMake: Build", "make"],
- "dependsOrder": "sequence"
- }
- ]
- }
复制代码
- 重点表明build使命
- 相称于将之前的全部使命都攒起来,变成一个完备的处置处罚流程,launch只必要调用这个build使命,就可以完成一次整理并重修
- 末了一个属性"dependsOrder": “sequence”,指定了依靠使命的实行序次。表现全部前置使命将按照它们在 “dependsOn” 数组中出现的序次依次实行。
launch.json格式概述
- {
- "version": "0.2.0",
- "configurations": [
- {
- "name": "CMake Debug",
- "type": "cppdbg",
- "request": "launch",
- "program": "${fileDirname}/build/bsp",
- "args": [],
- "stopAtEntry": false,
- "cwd": "${workspaceFolder}",
- "environment": [],
- "externalConsole": false,
- "MIMode": "gdb",
- "setupCommands": [
- {
- "description": "Enable pretty-printing for gdb",
- "text": "-enable-pretty-printing",
- "ignoreFailures": true
- }
- ],
- "miDebuggerPath": "/usr/bin/gdb",
- "preLaunchTask": "build"
- }
- ]
- }
复制代码 概述
launch很简单,只干三件事:
- 界说怎样启动调试器(GDB)
- 调试前的构建使命(preLaunchTask)
- 调试目标步调的位置
详细变量表明
- name: "CMake Debug"
作用: 调试设置的名称,表如今 VS Code 调试器下拉列表中。
- type: "cppdbg"
作用: 指定调试器范例为 C++ Debugger
- request: "launch"
作用: 表现启动一个新的步调举行调试(而非附加到已运行的历程)。
- program: "${fileDirname}/build/bsp"
作用: 指定要调试的可实行文件路径。
- stopAtEntry: false
作用: 是否在步调入口(如 main 函数)主动停息。设为 false 表现直接运行步调。
- cwd: "${workspaceFolder}"
作用: 调试步调的工作目次,此处设为工作区根目次。影响步调的文件读写路径(如相对路径的文件访问)。
- externalConsole: false
作用: 是否在外部体系终端中运行步调。设为 false 表现使用 VS Code 内置终端。
- MIMode: "gdb"
作用: 指定底层调试器为 GDB(GNU Debugger)。
- setupCommands
作用: 调试器启动时实行的初始化下令。通常我们不必要反汇编的,将主动天生的反汇编部门删除即可
- text: 向 GDB 发送 -enable-pretty-printing 下令,启用结构化数据(如 STL 容器)的友爱表现。
- ignoreFailures: 纵然下令实行失败,也不停止调试会话。
- miDebuggerPath: "/usr/bin/gdb"
作用: 显式指定 GDB 的路径。缺省时,VS Code 会从体系情况变量中查找 GDB。
- preLaunchTask: "build"
作用: 在启动调试前主动实行 tasks.json 中界说的 build 使命(如编译代码)。在上面的task.json中已经偏重先容过 build 使命了。
CMake格式概述
CMake本质就是告诉编译器怎样编译(天生makefile)
无非就是用相对简单的方式,管理结构比力复杂的步调,然后在差别平台的兼容性上相对好一些,和c_cpp_properties.json险些是一样的功能- # 设置 CMake 最低版本要求
- cmake_minimum_required(VERSION 3.10)
- # 设置项目名称和编程语言
- project(BSP_Project C)
- # 添加头文件目录
- include_directories(${CMAKE_SOURCE_DIR})
- # 设置可执行文件输出目录(可选)
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/build)
- # 添加可执行文件
- add_executable(bsp # 生成的可执行文件的名称
- main.c # 两个用于生成可执行文件的源文件
- bsp.c
- )
- target_include_directories(bsp PUBLIC ${CMAKE_SOURCE_DIR})
复制代码 必要留意的是,天生的可实行文件名称,肯定要和launch中的program对应,否则launch会找不到它
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |