我的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格式。
答案 0 :(得分:4)
$
在makefile中有特殊含义。如果要在shell命令中使用它,则必须将其加倍。
product1 product2 product3:
$(MAKE) $(MAKEPRGFLAGS) -C $(LIBS_ROOT)/$@
cp -r `ls -A | grep ".*\.a$$"` $(PROJECT_PATH)/lib/ $(PRODUCT_PATH)/
但是,您可以只使用ls
的通配符代替grep
和ls
:
cp -r *.a .*.a $(PROJECT_PATH)/lib/ $(PRODUCT_PATH)/