쿼카러버의 기술 블로그
[Makefile] Makefile의 substitution 함수 두 가지 subst, patsubst 본문
Linux - Ubuntu/Shell Script
[Makefile] Makefile의 substitution 함수 두 가지 subst, patsubst
quokkalover 2021. 8. 20. 18:37개발을 하다보면 makefile을 사용할 때가 정말 많다.
매번 헷갈려서 정리해보고자 한다.
1. subst
2. patsubst
1) subst
subst
= substitution의 약자다.subst {from},{to},{text}
형식을 가진다.
{text}
에서 모든 {from}
은 {to}
로 바뀐다
$(subst ee,EE,feet on the street)
위를 수행하면
"fEEt on the strEEt"이 출력된다.
2) patsubst
patsubst
는 pattern substitution의 약자다
쉽게 말해서 특정 문자열을 대체하는게 아니라 패턴을 대체한다.
이때 %
를 사용하는데, 와일드카드에서 사용되는 *
와 비슷한 기능을 한다고 보면된다.
patsubst {pattern},{replacement},{text}
{text}
에서 {pattern}
에 매칭되는 whitespace(띄어쓰기)로 구분된 word를 찾고, {replacement}
와 바꿔준다.
이건 말이 복잡해서 예를 들어서 설명해야 하는데,
$(patsubst %.c,%.o,x.c.c bar.c)
를 실행하면
x.c.o bar.o 가 된다.
즉, %.c라는 패턴을 %.o라는 값으로 바꾸는 것이다.
%가 pattern과 replacement 둘 다에 있을 경우, replacement의 %와 매칭되는 패턴이 pattern에 있는 %와 매칭되는 패턴을 replace하는 것이다.
예를 들어보겠다.
test.%:
@echo $(@)
@echo ${patsubst %, aaaa.%, $(@)}
위처럼 수행할경우 %는 모든 문자열과 매칭되는 패턴을 가지고, 앞에 aaaa.를 붙일 수 있게 된다.
주의할 점 :
- pattern중에 %가 (wildcard로 사용되는)있을 수 있는데, 이때 %는 모든 number와 character와 매칭된다.
- replacement에 %가 있다면 %는 pattern에서의 %와 매칭되는 텍스트로
'Linux - Ubuntu > Shell Script' 카테고리의 다른 글
[Linux] sed 유용한 명령어 모음 (계속 업데이트할 게시글) (0) | 2021.12.05 |
---|---|
[Makefile] %(percent symbol)의 의미 (0) | 2021.08.20 |
[Linux] tr - 리눅스 명령어 tr에 대해서 (0) | 2021.08.18 |
[Linux] sed - 리눅스 명령어 sed에 대해서 (1) | 2021.08.18 |
Linux Shell Script - find (리눅스에서 파일, 디렉토리 찾는 법) (0) | 2021.07.22 |
Comments