mv *.cache.{js,woff} sub_folder - 쉘 명령으로 사용되지만 Makefile 내에서는 사용되지 않습니다.

mv *.cache.{js,woff} sub_folder - 쉘 명령으로 사용되지만 Makefile 내에서는 사용되지 않습니다.

를 사용하여 무언가를 만든 후 하위 폴더로 끝나는 모든 파일을 하위 폴더로 make이동하고 싶습니다 ..cache.{js,woff}

(cd $(PFROOT)/PVWR2/gwt/pdfwebviewer/; \
mkdir -p cache_files; \
mv *.cache.{js,woff} sub_folder)

문제는 실행할 때 동적인 것이 아닌 파일 이름으로 make해석되는 것 같고 *.cache.{js,woff}, 물론 명시적인 이름을 가진 파일이 없다는 것입니다 *.cache.{js,woff}. 위 명령을 사용하여 폴더로 이동하고 셸에서 수동으로 이동하면 원활하게 작동합니다.

이것이 와일드카드와 관련이 있다는 것을 알고 있지만 이 문제를 해결하는 방법을 모르겠습니다.

답변1

{...}bash 전용 중괄호 확장 구문이지만 make는 /bin/sh기본적으로 bash.

info make, 섹션 5.3.2 에서 :

쉘로 사용되는 프로그램은 변수에서 가져옵니다 SHELL. 이 변수가 makefile에 설정되어 있지 않으면 프로그램은 /bin/sh쉘처럼 작동합니다.

bash를 사용하여 Makefile의 쉘 구조를 구문 분석하려면 맨 위에 다음을 추가할 수 있습니다.

SHELL := /bin/bash

관련 정보