我试图在makefile中做简单的c ++类生成器(取决于给定的名称),但是当我不知道bash以及这些东西是如何工作时,它真的很烦人。
class:
@echo "Type class name: "; \
read CLASS_NAME; \
echo Creating class called $${CLASS_NAME}; \
echo "Class $${CLASS_NAME} {
int x;
int y;
};">./$${CLASS_NAME}.h
如何使最后一个回声起作用?我不知道如何回应多行。
答案 0 :(得分:2)
这里的反斜杠由make 评估,而不是由它调用的shell评估。 (同样,make
会删除换行符,而不是将它们传递给shell。)
这里最简单的方法是使用printf
格式字符串来插入换行符,而不是试图使它们成为字面值:
class:
@echo "Type class name: "; \
read CLASS_NAME; \
echo "Creating class called $${CLASS_NAME}"; \
printf '%s\n' "Class $${CLASS_NAME} {" 'int x;' 'int y;' '};' >"./$${CLASS_NAME}.h"