新的介绍内容:
什么是Build?
Build是一款为VS Code设计的多步骤增量构建工具扩展,基于JSON、字符串模板和glob语法。它不仅能利用vscode-cpptools的includePath、defines和forcedInclude变量来构建C/C++项目,还可以用于其他编程语言的构建任务。Build通过动态创建任务来运行cppbuild命令行工具,提供灵活且高效的构建解决方案。
如何使用Build?
- 安装cppbuild命令行工具:通过运行
npm install cppbuild -g
来安装。 - 配置c_cpp_build.json文件:根据您的需求修改此文件。
- 运行任务:在VS Code的“终端”菜单中选择“运行任务...”,您将看到可用的构建任务。
- 从终端运行构建:使用命令
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}]"
}
构建文件语法
- 构建步骤命令将为每个匹配filePattern的文件重复执行。
- fileList定义多值变量,命令不会重复执行。
- filePattern和fileList互斥,使用完整的glob语法。
- 使用标准的${name}变量语法,$${name}表示多值变量。
- ()定义子模板,子模板只能包含一个多值变量。
- []中的字符串被视为路径,如果路径包含空格将被引号括起来。
- 其他可用变量包括workspaceRoot/workspaceFolder、workspaceRootFolderName、outputDirectory、buildTypeName、configName、includePath、defines和forcedInclude。
- 可以使用params属性几乎在任何地方定义额外变量,低级别定义的变量优先级更高。
- 变量值和outputFile/outputDirectory属性可以包含其他变量。
- 默认情况下,如果outputFile已存在且比处理的输入文件更新,则不会执行构建操作,实现增量构建。
预定义变量
已预定义以下变量:
- workspaceRoot/workspaceFolder和workspaceRootFolderName
- configName - 选定的构建配置名称
- buildTypeName - 选定的构建类型名称(可选)
- filePath、fileDirectory、fileName、fullFileName和fileExtension
- outputDirectory - 构建步骤的输出目录
- includePath、defines和forcedInclude - 从c_cpp_properties.json文件填充的多值变量
- outputFile - 仅当指定了filePattern时可用
注意事项
- 执行任务时,VS Code使用当前或默认终端,因此请确保在构建步骤中使用shell特定命令时,选择了正确的终端shell。
- 构建也可以从命令行运行,例如
cppbuild GCC debug
。 - 如果与vscode-cpptools的c_cpp_build.json文件一起使用,文件中的配置名称必须与c_cpp_properties.json文件中定义的完全一致。
- cppbuild不限于C/C++构建,可以不使用c_cpp_properties.json文件运行,使用
-p
选项且无文件名(需要cppbuild版本1.1.0或更高)。 - 更多选项请使用
cppbuild --help
。
为什么选择Build?
在为嵌入式设备开发C/C++项目时,我希望简化VS Code中的多步骤构建过程配置和维护,同时消除c_cpp_properties.json和常用的MAKE/CMake文件之间的设置重复。尽管这些工具是行业标准,我个人并不喜欢它们,这促使我开发了一个全新的构建工具。考虑到vscode-cpptools扩展的流行和广泛使用,我选择了适应现状,使用c_cpp_properties.json文件而不是通过vscode-cpptools-api提供自己的设置。
改进和修复
欢迎在GitHub上提出任何改进、修复或建议:
已知问题
- 虽然创建的任务被标记为构建任务,但它们不会出现在“构建任务”组中。目前尚不清楚这是不是一个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,以消除已知的漏洞
本站所有资源都是由网友投稿发布,或转载各大下载站,
请自行检测软件的完整性!
本站所有资源仅供学习与参考,请勿用于商业用途,否则
产生的一切后果将由您自己承担!
如有侵权请联系我们删除下架,联系方式:study_golang@163.com