我有一个简单的makefile,它应该打印git日志,如下所示:
SHELL=/bin/bash
get_log:
echo $(git log)
然而,当我运行make get_log
时,没有返回任何东西,虽然如果我在CMD中直接运行git log
,我得到结果。更新:文件格式正确,我使用空格而不是制表符在这里发布问题。你知道问题出在哪里吗?提前谢谢。
错误是在你的makefile格式上,根据设计,你必须使用制表符缩进所以你必须在echo $(git log)
之前加一个tab indentation
。
echo $(git log)
有两个缺陷:它使用单个$
,它告诉make查找变量git
的内容,但有一个错误的空格和log
作为附加。我不认为make
会在这种病态的访问下找到任何东西,这意味着它默默地用……什么都没有代替表达式。其次,您不需要echo
,因为git log
无论如何都要写入stdout
。所以正确的格式应该是:
get_log:
git log
如果这是非常有用的是另一个问题。我更喜欢在脚本中分离关注点——只要您不能增加任何好处,比如从部署分支或sg获取日志。类似地,我会远离git
。无论如何,用户必须学习log
之类的基础知识。
PS:我建议你阅读https://www.gnu.org/software/make/manual/上的手册,因为你甚至缺乏对make
的最基本的理解(无意冒犯),它会一次又一次地让你感到沮丧(缺乏)知识。