Man*_*ete 1 bash shell makefile
我一直在编译应用程序Makefile一段时间没有任何问题.今天,我意识到我Makefile不再工作了.一点调试,我很快发现$(HOME)没有定义
$echo $(HOME)
-bash: HOME: command not found
Run Code Online (Sandbox Code Playgroud)
我始终认为,$HOME和$(HOME)可以互换使用.是否有理由可以配置系统以避免使用$(HOME)?
这${HOME},不是$(HOME).
$(HOME)将扩展为HOME命令的输出.由于(可能)没有这样的命令,您将收到错误消息.
但是,$(HOME)Makefile中的语法是否正确.如果你需要帮助调试你的Makefile,你需要告诉我们里面有什么 - 或者更好的是,一个表现出同样问题的小Makefile.make像这样的规则:
target:
echo $(HOME)
Run Code Online (Sandbox Code Playgroud)
应该在运行时打印主目录的路径make target.
在shell中,您可以将HOME变量称为$HOME或作为${HOME}; 后者可以避免相邻令牌的问题.
在Makefile中,您可以使用$(HOME)或${HOME},但$(HOME)表单更常见.只有当变量名称长度为一个字符时才能省略括号(但即使这样,您也应该使用它们来清楚).(没有人声称这make是一种清晰直观的语法模型.)