GNU make 中的命令执行与 SSE4.2 指令集

需积分: 4 65 下载量 37 浏览量 更新于2024-08-09 收藏 4.21MB PDF 举报
"GNU make makefile 中文手册" 在 GNU make 中,命令的执行遵循特定的规则。当目标文件需要更新时,对应的规则定义的命令会被执行。这些命令以多行形式书写时,每行都会在独立的子 shell 中运行,这意味着各行命令之间互不干扰。比如在 Makefile 中,`cd` 命令用于改变当前目录,但这种改变仅限于该命令所在的 shell 子进程,不会影响后续的命令。如果想让后续命令在新目录下执行,必须确保 `cd` 和后续命令在同一行,并用分号分隔,或者通过反斜杠(\)将多行命令连接成一个完整的 shell 命令行。 在 Makefile 中,所有规则命令的执行会使用环境变量 "SHELL" 指定的程序,默认是 "/bin/sh"。值得注意的是,虽然大多数变量可以从同名的系统环境变量中获取值,但 "SHELL" 是个例外,它的值并不会直接继承自系统环境变量。 在 GNU make 中,Makefile 是用来描述构建过程的文本文件,包含了一系列规则,定义了目标文件及其依赖关系,以及如何生成目标的命令。Makefile 规则通常由目标、依赖和命令三部分组成。目标是需要构建的文件,依赖是目标生成前需要先更新的文件,命令则是更新目标所需的步骤。 Makefile 可以通过变量定义来简化和重用代码,还可以使用自动变量,如 `$@` 表示当前目标,`$<` 表示第一个依赖。此外,Makefile 还支持条件语句和函数,比如 `wildcard` 函数可以用来获取当前目录下的所有匹配文件名。 在处理依赖关系时,可以使用通配符(*)匹配多个文件,但要注意其可能带来的问题,如误匹配。为了更精确地控制,可以使用 `vpath` 关键字设置特定路径的搜索规则,或者利用 `VPATH` 变量进行全局目录搜索。 Makefile 中有几种特殊的目标,如伪目标(.PHONY),用于标识那些实际上并不对应物理文件的目标;强制目标(没有命令或依赖的规则),用来确保总是执行某些操作;空目标文件,用于收集多个命令的结果;以及静态模式规则,允许更灵活地定义规则,匹配一组相似的目标。 Makefile 是构建自动化的重要工具,通过合理编写和利用其特性,可以高效管理复杂的构建过程。理解和掌握 GNU make 的规则和语法对于任何涉及软件编译和构建的开发者来说都是必不可少的技能。