makefile中的多行回显

时间:2017-11-29 16:49:30

标签: bash makefile

我试图在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  

如何使最后一个回声起作用?我不知道如何回应多行。

1 个答案:

答案 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"