将代理变量导出到 GNU Make 配方
为 GNU make 的配方命令导出代理环境,并避免 shell export 在彼此独立的配方行之间丢失。
make 运行下载器,由下载器决定如何使用代理。对 GNU make 来说,当每条相关配方都应收到变量时,请在 Makefile 作用域导出这些变量:
export http_proxy := http://proxy.example:8080
export https_proxy := http://proxy.example:8080
fetch:
curl --fail --output package.tar.gz https://downloads.example/package.tar.gz
配方行以制表符开头。export 指令属于 make 的语法,会把值传入命令的环境。
单条配方行上的 shell export 通常会在下一行之前消失,因为 GNU make 会为每一行调用单独的 shell。对于单个命令,请改为把 shell 赋值直接写在那个命令上:
fetch:
http_proxy=http://proxy.example:8080 https_proxy=http://proxy.example:8080 curl --fail https://downloads.example/package.tar.gz
使用下载器文档中记录的变量名和代理协议。如果构建可以使用公共 HTTP 端点,请从 HTTP 代理列表中为这些环境值挑选一个候选。忽略这些变量的可执行文件需要自己的代理选项。凭据最好通过构建环境提供,而不是写进 Makefile。
这些导出只影响子命令。make 退出后,它们并不会 改变父终端的环境。