Command line 使用makefile中的选项调用外部命令
我有一本书 我需要根据一些逻辑在一些文件的开头添加一些文本。我正在使用echo命令Command line 使用makefile中的选项调用外部命令,command-line,makefile,echo,arduino,Command Line,Makefile,Echo,Arduino,我有一本书 我需要根据一些逻辑在一些文件的开头添加一些文本。我正在使用echo命令 ECHO = echo 在文件的后面,我有很多地方,比如 $(OBJDIR)/%.cpp: %.pde $(ECHO) '#if ARDUINO >= 100\n #include "Arduino.h"\n#else\n #include "WProgram.h"\n#endif' > $@ 这很好用 最近,一些用户抱怨echo命令在某些linux发行版中不能正常工作,
ECHO = echo
在文件的后面,我有很多地方,比如
$(OBJDIR)/%.cpp: %.pde
$(ECHO) '#if ARDUINO >= 100\n #include "Arduino.h"\n#else\n #include "WProgram.h"\n#endif' > $@
这很好用
最近,一些用户抱怨echo命令在某些linux发行版中不能正常工作,我不得不在echo命令中添加“-e”选项
因此,我更改了将命令声明为的第一行
ECHO = echo -e
这不起作用,因为makefile将-e视为文本的一部分,而不是选项的一部分
编辑:
我没有得到任何错误,但是文本-e也被附加到我正在创建的文件中
有没有办法将-e声明为选项而不是文本的一部分?如果get
/bin/sh:1:-e:notfound
错误它与您的shell相关,而不是makefile。否则,请输入您的错误。当然,如果你有错误 如果get/bin/sh:1:-e:notfound
错误,它与您的shell相关,而不是makefile。否则,请输入您的错误。当然,如果你有错误 您很可能看到了行为差异,因为在某些shell的某些版本中,echo
是一个shell内置命令。这是复杂的,因为make有时只使用shell调用命令——如果可能的话,它更喜欢直接调用命令。因此,有时,在某些系统上,您没有调用您认为是的echo
命令
你可能会有更好的运气设置
ECHO = /bin/echo -e
它将显式调用外部
echo
命令,即使shell具有内置版本。这样,您应该会得到一致的结果。您很可能看到了行为差异,因为在某些shell的某些版本中,echo
是一个shell内置命令。这是复杂的,因为make有时只使用shell调用命令——如果可能的话,它更喜欢直接调用命令。因此,有时,在某些系统上,您没有调用您认为是的echo
命令
你可能会有更好的运气设置
ECHO = /bin/echo -e
它将显式调用外部
echo
命令,即使shell具有内置版本。这样你应该得到一致的结果。我已经更新了问题。我没有收到任何错误,但文本-e也被附加到我正在创建的文件中。@Sudar我从echo的手册页中找到了以下文本:,这不是您的问题您的shell可能有自己的echo版本,它通常会取代此处描述的版本。有关shell支持的选项的详细信息,请参阅shell的文档。我已经更新了这个问题。我没有收到任何错误,但文本-e也被附加到我正在创建的文件中。@Sudar我从echo的手册页中找到了以下文本:,这不是您的问题您的shell可能有自己的echo版本,它通常会取代此处描述的版本。有关shell支持的选项的详细信息,请参阅shell的文档。谢谢您的帮助。但我不确定,这是否会对Mac OS产生任何问题。还需要在那里进行测试。谢谢,这解决了问题。但我不确定,这是否会对Mac OS产生任何问题。我们也需要在那里进行测试。