当前位置:首页 > 下载列表 > Build++

Build++ 1.3.17

新的介绍内容:什么是Build?Build是一款为VSCode设计的多步骤增量构建工具扩展,基于JSON、字符串模板和glob语法。它不仅能利用vscode-cpptools的includePath、defines和forcedInclude变量来构建C/C++项目,还可以用于其他编程语言的构建任务。Build通过动态创建任务来运行cppbuild命令行工具,提供灵活且高效的构建解决方案。如何使
分类:   下载/工具 · 工具软件 来源:  点击进入 版本:  1.3.17
日期:  2025-07-21 人气:   大小:  
标签:   JSON C build C++
点击下载 相关下载
功能介绍

新的介绍内容:

什么是Build?

Build是一款为VS Code设计的多步骤增量构建工具扩展,基于JSON、字符串模板和glob语法。它不仅能利用vscode-cpptools的includePath、defines和forcedInclude变量来构建C/C++项目,还可以用于其他编程语言的构建任务。Build通过动态创建任务来运行cppbuild命令行工具,提供灵活且高效的构建解决方案。

如何使用Build?

  1. 安装cppbuild命令行工具:通过运行npm install cppbuild -g来安装。
  2. 配置c_cpp_build.json文件:根据您的需求修改此文件。
  3. 运行任务:在VS Code的“终端”菜单中选择“运行任务...”,您将看到可用的构建任务。
  4. 从终端运行构建:使用命令cppbuild <配置名称> [构建类型] -w,例如cppbuild gcc debug -w-w开关指示cppbuild使用当前的VS Code工作区。您还可以使用-d开关输出执行的命令,-c开关在错误时继续,或者-f开关强制重建所有文件。

运行cppbuild --help获取更多选项。

构建理念

构建类型示例:

{
  "name": "debug",
  "params": { "buildTypeParams": "-O0 -g" }
}

构建步骤示例:

{
  "name": "C   Compile",
  "filePattern": "**/*.cpp",
  "outputFile": "build/${buildTypeName}/${fileDirectory}/${fileName}.o",
  "command": "g   -c ${buildTypeParams} (-I[$${includePath}]) (-D$${defines}) [${filePath}] -o [${outputFile}]"
}

构建文件语法

  1. 构建步骤命令将为每个匹配filePattern的文件重复执行。
  2. fileList定义多值变量,命令不会重复执行。
  3. filePatternfileList互斥,使用完整的glob语法。
  4. 使用标准的${name}变量语法,$${name}表示多值变量。
  5. ()定义子模板,子模板只能包含一个多值变量。
  6. []中的字符串被视为路径,如果路径包含空格将被引号括起来。
  7. 其他可用变量包括workspaceRoot/workspaceFolderworkspaceRootFolderNameoutputDirectorybuildTypeNameconfigNameincludePathdefinesforcedInclude
  8. 可以使用params属性几乎在任何地方定义额外变量,低级别定义的变量优先级更高。
  9. 变量值和outputFile/outputDirectory属性可以包含其他变量。
  10. 默认情况下,如果outputFile已存在且比处理的输入文件更新,则不会执行构建操作,实现增量构建。

预定义变量

已预定义以下变量:

  1. workspaceRoot/workspaceFolderworkspaceRootFolderName
  2. configName - 选定的构建配置名称
  3. buildTypeName - 选定的构建类型名称(可选)
  4. filePathfileDirectoryfileNamefullFileNamefileExtension
  5. outputDirectory - 构建步骤的输出目录
  6. includePathdefinesforcedInclude - 从c_cpp_properties.json文件填充的多值变量
  7. outputFile - 仅当指定了filePattern时可用

注意事项

  1. 执行任务时,VS Code使用当前或默认终端,因此请确保在构建步骤中使用shell特定命令时,选择了正确的终端shell。
  2. 构建也可以从命令行运行,例如cppbuild GCC debug
  3. 如果与vscode-cpptools的c_cpp_build.json文件一起使用,文件中的配置名称必须与c_cpp_properties.json文件中定义的完全一致。
  4. cppbuild不限于C/C++构建,可以不使用c_cpp_properties.json文件运行,使用-p选项且无文件名(需要cppbuild版本1.1.0或更高)。
  5. 更多选项请使用cppbuild --help

为什么选择Build?

在为嵌入式设备开发C/C++项目时,我希望简化VS Code中的多步骤构建过程配置和维护,同时消除c_cpp_properties.json和常用的MAKE/CMake文件之间的设置重复。尽管这些工具是行业标准,我个人并不喜欢它们,这促使我开发了一个全新的构建工具。考虑到vscode-cpptools扩展的流行和广泛使用,我选择了适应现状,使用c_cpp_properties.json文件而不是通过vscode-cpptools-api提供自己的设置。

改进和修复

欢迎在GitHub上提出任何改进、修复或建议:

已知问题

  1. 虽然创建的任务被标记为构建任务,但它们不会出现在“构建任务”组中。目前尚不清楚这是不是一个bug。详细信息请参考VS Code问题#83378。

发布说明

  • 1.0 初始发布
  • 1.1 在所有级别添加params,工具可以不使用C/C++扩展和c_cpp_properties.json文件运行
  • 1.2 添加了对增量构建和outputFile构建步骤属性的支持
  • 1.3 cppbuild更新到显著改进的版本1.3.0
  • 1.3.13 修复任务意外提供的类型为“shell”的任务
  • 1.3.16 cppbuild更新到改进的版本1.3.16
  • 1.3.17 lodash更新到版本4.17.20,以消除已知的漏洞
版本声明
本文转载于:https://marketplace.visualstudio.com/items?itemName=tdjastrzebski.vscode-cppbuild 如有侵犯,请联系study_golang@163.com删除
查看更多
课程推荐
  • Golang云原生架构师课程
    Golang云原生架构师课程
    Go是一门并发支持、垃圾回收的编译型系统编程语言;本课程转载自哔哩哔哩:https://www.bilibili.com/video/BV1Mh411M7A
    204次学习
  • MySQL数据管理之备份恢复案例解析视频教程
    MySQL数据管理之备份恢复案例解析视频教程
    《MySQL数据管理之备份恢复案例解析视频教程》MySQL是一个开放源码的小型关联式数据库管理系统,目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
    163次学习
  • MySQL索引优化解决方案
    MySQL索引优化解决方案
    本套课程是根据MySQL索引的设计理念与数据结构、索引使用场景、索引分类、索引运用场景、索引性能分析、查询优化、MySQL索引的慢查询等组成,主要讲述了MySQL索引优化的解决方案,非常适合有MySQL使用基础或者有一定工作经验的同学。课程讲解了解决大数量查询慢的问题、如何编写一个高效的SQL、查询语句应该如何优化、索引的实现原理是什么、索引又应该如何优化...等诸多SQL索引优化的难点和面试点。
    182次学习
  • 极客学院Docker视频教程
    极客学院Docker视频教程
    Docker是PaaS提供商dotCloud开源的一个基于LXC的高级容器引擎,源代码托管在Github上,基于go语言并遵从Apache2.0协议开源。Docker自2013年以来非常火热,无论是从github上的代码活跃度,还是各大厂商的支持,都使Docker成为了时下最受关注的技术,甚至微软都声称在下一代WindowsServer中集成对Docker的支持。所以我们收集了《极客学院Docke
    243次学习
  • Golang进阶实战编程
    Golang进阶实战编程
    本课程是在《Go语言基础视频》基础之上录制的,是Go语言基础的后半部分。包括包的管理,IO操作,Go语言最大的亮点:高并发,goroutine,channel,反射等。本视频主要为了帮助Go语言的初学者,从零到一的快速入门。学完本套课程,可以学会如果通过包管理Go项目,并发模型,以及并发实现,channel通道如何传递数据,反射等等。
    128次学习
  • JavaScript极速入门
    JavaScript极速入门
    本套课程将帮助大家迅速掌握JavaScript这门高端的、动态的、弱类型编程语言。知识点简单明了,让你学习0压力,适合新手观看学习......
    431次学习
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码