我使用Makefile
编译应用程序已经有一段时间没有任何问题了。今天,我意识到我Makefile
不再工作了。一点调试,我很快发现$(HOME)
没有定义
$echo $(HOME)
-bash: HOME: command not found
我一直认为$HOME
和$(HOME)
可以互换使用。有没有理由可以配置系统以避免使用$(HOME)
?
答案 0 :(得分:8)
它是${HOME}
,而不是$(HOME)
。
$(HOME)
将扩展为HOME
命令的输出。由于(可能)没有这样的命令,您将收到错误消息。
但是,$(HOME)
是Makefile中的正确语法。如果您需要帮助调试Makefile,您需要向我们展示其中的内容 - 或者更好的是,展示相同问题的小Makefile。 make
规则如下:
target:
echo $(HOME)
运行make target
时,应打印主目录的路径。
在shell中,您可以将HOME
变量称为$HOME
或${HOME}
;后者可以避免相邻令牌的问题。
在Makefile中,您可以使用$(HOME)
或${HOME}
,但$(HOME)
形式更为常见。只有当变量名称长度为一个字符时才能省略括号(但即使这样,您也应该使用它们来清楚)。 (没有人声称make
是一种清晰直观的语法模型。)