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

Mül*_*ler 2 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)/
Run Code Online (Sandbox Code Playgroud)

编译完成后,当尝试复制.a文件时,出现以下错误:

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

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

我已小心地提供了匹配的牙套。我的Makefile声明有什么问题?

我在Windows中的cygwin上运行。使用Windows格式的EOL转换从Notepad ++编辑Makefile。

Bar*_*mar 5

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

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

但是,而不是使用lsgrep,你可以给通配符ls

    cp -r *.a .*.a $(PROJECT_PATH)/lib/ $(PRODUCT_PATH)/
Run Code Online (Sandbox Code Playgroud)