我的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。
$在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)
但是,而不是使用ls和grep,你可以给通配符ls:
cp -r *.a .*.a $(PROJECT_PATH)/lib/ $(PRODUCT_PATH)/
Run Code Online (Sandbox Code Playgroud)