GNU Make 基础深入解析
变量导出与取消导出规则
在使用变量的导出(export)和取消导出(unexport)时,遵循“最后指令生效”原则。例如,若多次对同一变量进行导出和取消导出操作,最后一次的指令会决定变量的状态。
导出指令还能与特定目标变量结合,为特定规则修改环境。示例如下:
export FOO=bar all: export FOO=just for all all: ; @echo FOO is $$FOO此 Makefile 为all规则将FOO设置为just for all,而其他规则中FOO的值为bar。需注意,不能使用特定目标的取消导出操作从特定规则的环境中移除变量。若编写all: unexport FOO,会引发错误。
GNU make 会向子进程环境添加多个变量,如MAKEFLAGS、MFLAGS和MAKELEVEL。MAKEFLAGS和MFLAGS包含命令行指定的标志,MAKEFLAGS是为 GNU make 内部使用格式化后的标志,MFLAGS仅因历史原因存在,切勿在规则中使用