未终止的引用字符串:bin / sh

时间:2017-06-13 13:53:13

标签: bash makefile syntax-error sh

我有以下makefile: -

all:
    find | grep -E "\.c\$" | xargs gcc -c -I src -I include -w
    gcc -o main *.o -lm -pthread

在运行make时出现以下错误: -

find | grep -E "\.c\ | xargs gcc -c -I src -I include -w
/bin/sh: 1: Syntax error: Unterminated quoted string
Makefile:2: recipe for target 'all' failed
make: *** [all] Error 2

我尝试了类似问题的答案,但添加SHEBANG系列并没有帮助。此外,我已经逃脱了$字符。我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

make已经完成了你要做的大部分工作。假设您不希望find在子目录中递归查看,您真正需要的是

# Rule for building a c file
.c:
        gcc -c -I src -I include -w -o $@ $<

# Make sure all C files are compiled, then link the resulting object files
all: *.c
        gcc -o main *.o -lm -pthread

如果您希望在子目录中找到C源文件,您可能需要稍微重新构建项目,方法是在每个子目录中添加Makefile并在这些目录中递归调用make。 / p>