局部变量在 gnu Makefile 中不起作用?
Local variables not working in a gnu Makefile?
我 运行 make
在 macOS
上,对任何局部变量都不满意。采取此片段旨在获取 Makefile 脚本目录的完整路径
setup_for_run:
mkfile_path=$(abspath $(lastword $(MAKEFILE_LIST)))
mkfile_dir=$(dir $(mkfile_path))
echo "scriptdir=$(SCRIPT_DIR)"
export PATH=$($(SCRIPT_DIR)/.venv/bin:$(PATH))
make setup_for_run
的结果是:
$make setup_for_run
mkfile_path=/Users/steve/git/hercl/Makefile
mkfile_dir=
echo "scriptdir="
scriptdir=
export PATH=
所以我们看到 none 的局部变量是可操作的。在 macOS
默认安装的 gnu make
中激活它们的方法是什么?
Make 在自己的 shell 中运行配方中的每个命令(除非声明 .ONESHELL
)。为每个命令清除任何修改的状态,例如变量。而且,任何变量集都不会在 make 之外传递。为此,您更有可能想要 source
bash 脚本。
Make 用于从其他文件制作文件。
有几种设置变量的方法:
# Global scope
VARIABLE := myglobal
# Target specific
mytarget: VARIABLE := targetspecific
# Prefix the command
myprefix:
VARIABLE=prefix env
我 运行 make
在 macOS
上,对任何局部变量都不满意。采取此片段旨在获取 Makefile 脚本目录的完整路径
setup_for_run:
mkfile_path=$(abspath $(lastword $(MAKEFILE_LIST)))
mkfile_dir=$(dir $(mkfile_path))
echo "scriptdir=$(SCRIPT_DIR)"
export PATH=$($(SCRIPT_DIR)/.venv/bin:$(PATH))
make setup_for_run
的结果是:
$make setup_for_run
mkfile_path=/Users/steve/git/hercl/Makefile
mkfile_dir=
echo "scriptdir="
scriptdir=
export PATH=
所以我们看到 none 的局部变量是可操作的。在 macOS
默认安装的 gnu make
中激活它们的方法是什么?
Make 在自己的 shell 中运行配方中的每个命令(除非声明 .ONESHELL
)。为每个命令清除任何修改的状态,例如变量。而且,任何变量集都不会在 make 之外传递。为此,您更有可能想要 source
bash 脚本。
Make 用于从其他文件制作文件。
有几种设置变量的方法:
# Global scope
VARIABLE := myglobal
# Target specific
mytarget: VARIABLE := targetspecific
# Prefix the command
myprefix:
VARIABLE=prefix env