Kbuild 的 Bash 补全

内核构建系统使用 Makefile 编写,make 命令的 Bash 补全可以通过 bash-completion 项目获得。

但是,内核构建的 Makefile 非常复杂。 除了 make 命令本身的选项之外,make 命令的通用补全规则没有为内核构建系统提供有意义的建议。

为了增强对各种变量和目标的补全,内核源代码在 scripts/bash-completion/make 处包含了自己的补全脚本。

此脚本在使用内核树时提供额外的补全。 在内核树之外,它默认为 make 命令的通用补全规则。

先决条件

该脚本依赖于 bash-completion 项目提供的辅助函数。 请确保它已安装在您的系统上。 在大多数发行版上,您可以通过标准软件包管理器安装 bash-completion 软件包。

如何使用

您可以直接 source 该脚本

$ source scripts/bash-completion/make

或者,您可以将其复制到 Bash 补全脚本的搜索路径中。 例如

$ mkdir -p ~/.local/share/bash-completion/completions
$ cp scripts/bash-completion/make ~/.local/share/bash-completion/completions/

详细信息

在以下情况下,Kbuild 的额外补全功能将被启用

  • 您位于内核源代码的根目录中。

  • 您位于 O= 选项创建的顶级构建目录中(通过指向内核源的 source 符号链接进行检查)。

  • -C make 选项指定内核源代码或构建目录。

  • -f make 选项指定内核源代码或构建目录中的文件。

如果以上任何一项都不满足,它将回退到通用补全规则。

补全支持

  • 常用目标,例如 all, menuconfig, dtbs 等。

  • Make(或环境变量),例如 ARCH, LLVM 等。

  • 单目标构建 (foo/bar/baz.o)

  • 配置文件 (*_defconfig*.config)

某些变量提供智能行为。 例如,CROSS_COMPILE= 后跟 TAB 键会显示已安装的工具链。 显示的 defconfig 文件列表取决于 ARCH= 变量的值。