错误提示
解决历程
花了一晚上时间,一直以为是写错了哪里,一度怀疑人生,心态爆炸
上网找答案都是让安装make或者更新make的,但是更新了也没用
最后看到了shell命令的调用,把DIR:=`pwd` 改成DIR:=$(shell pwd)就OK了
唉,心累了。
原因
shell函数的描述
shell函数不同于除“wildcard”函数之外的其它函数。make可以使用它来和外部通信。
函数功能:函数“shell”所实现的功能和shell中的引用(``)相同。实现对命令的扩展。这就意味着需要一个shell 命令作为此函数的参数,函数的返回结果是此命令在shell中的执行结果。make仅仅对它的回返结果进行处理;make将函数返回结果中的所有换行符(“\n”)或者一对“\n\r”替换为单空格;并去掉末尾的回车符号(“\n”)或者“\n\r”。进行函数展开式时,它所调用的命令(它的参数)得到执行。
除对它的引用出现在规则的命令行和递归变量的定义中以外,其它决大多数情况下,make是在读取解析Makefile时完成对函数shell的展开。
返回值:函数“shell”的参数(一个 shell 命令)在 shell 环境中的执行结果。
函数说明:函数本身的返回值是其参数的执行结果,没有进行任何处理。对结果的处理是由 make 进行的。当对函数的引用出现在规则的命令行中,命令行在执行时函数才被展开。展开时函数参数(shell 命令)的执行是在另外一个 shell进程中完成的,因此需要对出现在规则命令行的多级“shell”函数引用需要谨慎处理,否则会影响效率(每一级的“shell”函数的参数都会有各自的 shell
进程)
就是说,调用shell命令会将语句末尾换行符替换成空格,另一种直接引用的方式不会替换,末尾就是换行符,makefile中换行就是另一个语句了,所以读入的目录不全,导致make失败