Makefile错误 - 寻找匹配的“”时意外的EOF

时间:2017-05-23 06:08:40

标签: bash makefile cp

我的Makefile摘录如下:

.PHONY: product1 product2 product3
product1 product2 product3:
    $(MAKE) $(MAKEPRGFLAGS) -C $(LIBS_ROOT)/$@
    cp -r `ls -A | grep ".*\.a$"` $(PROJECT_PATH)/lib/ $(PRODUCT_PATH)/

编译完成后,当它尝试复制.a文件时,它会给我这个错误:

  

/ bin / sh:命令替换:第0行:查找时意外的EOF   匹配“”'

     

/ bin / sh:命令替换:第1行:语法错误:意外结束   文件

我已经注意提供匹配的括号。我的Makefile声明有什么问题?

我在Windows上运行cygwin。使用Notepad ++编辑Makefile,并将EOL转换为Windows格式。

1 个答案:

答案 0 :(得分:4)

$在makefile中有特殊含义。如果要在shell命令中使用它,则必须将其加倍。

product1 product2 product3:
    $(MAKE) $(MAKEPRGFLAGS) -C $(LIBS_ROOT)/$@
    cp -r `ls -A | grep ".*\.a$$"` $(PROJECT_PATH)/lib/ $(PRODUCT_PATH)/

但是,您可以只使用ls的通配符代替grepls

    cp -r *.a .*.a $(PROJECT_PATH)/lib/ $(PRODUCT_PATH)/