2017-05-23 5 views
0

다음과 같이 내 메이크의 발췌는 다음과 같습니다 컴파일이 완료메이크 오류 - ' "`일치를 찾는 동안 예기치 않은 EOF

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

후에는 .a 파일을 복사 할 때 그것이 나에게이 있습니다, 오류 :

/bin/sh: command substitution: line 0: unexpected EOF while looking for matching `"'

/bin/sh: command substitution: line 1: syntax error: unexpected end of file

나는 일치하는 괄호를 제공하기 위해주의를 촬영 한 내 메이크 선언에 뭐가 문제

내가 Windows에서 Cygwin에서 실행하고 편집 메이크.?. s에서 메모장 + +에서 EOL로 변환 창 형식으로.

답변

3

$은 메이크 파일에서 특별한 의미가 있습니다. 쉘 명령에서 사용하려면 두 번 눌러야합니다.

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

하지만 그 대신 lsgrep를 사용하여, 당신은 ls에 와일드 카드를 줄 수있는 다음 globs와 중 하나가 일치하지 않는 경우

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

'cp'는 오류가됩니다. –

+0

@gniourf_gniourf True. 이를 방지하기 위해'nullglob'을 활성화 할 수 있습니다. 둘 중 어느 것도 일치하지 않으면 구문이 올바르게 작동하지 않습니다. – Barmar