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