Makefile 자주 사용하는 문법 정리
Makefile 을 작성할 때 자주 사용하는 자동 변수들과 문법을 정리해보았다.
Last updated
Was this helpful?
Makefile 을 작성할 때 자주 사용하는 자동 변수들과 문법을 정리해보았다.
Last updated
Was this helpful?
$@
: 목표 이름
$*
: 목표 이름에서 확장자가 없는 이름
$<
: 첫 번째 전제 조건의 파일 이름
$?
: 목표 파일 보다 더 최근에 갱신된 파일 이름
$^
: 현재 Target이 의존하는 대상들의 전체 목록
$?
: 현재 Target이 의존하는 대상들 중 변경된 것들의 목록
$%
: 대상의 이름 (해당 규칙 대상이 아카이브 인 경우)
For example, if the target is foo.a(bar.o) then $%
is bar.o and $@
is foo.a. $%
is empty when the target is not an archive member.
Archive files 이란? Archive files are files containing named sub-files called members; they are maintained with the program ar and their main use is as subroutine libraries for linking. 즉, 파일을 묶어서 하나로 만든 것.
사용 가능한 자동 변수들의 전체 목록과 설명은 에서 확인할 수 있다.
$(addsuffix 접미사, 문자열)
$(addprefix 접두어, 문자열)
$(shell <shell-command>)
$(subst 찾을 문자, 변경할 문자, 대상 문자)
"대상문자"에서 "찾을 문자"를 "변경할 문자"로 변경해 준다.
$(patsubst 찾을 패턴, 변경할 패턴, 대상 문자)
subst와 기능은 동일하나 확장자를 바꿀때 사용함
$(strip 대상문자)
대상문자에서 모든 공백을 1칸으로 줄인다. 여백이 많아도 모두 1칸으로
$(filter 찾을 문자, 대상문자)
대상문자에서 찾을 문자를 포함한 문자들을 찾아서 저장한다.
$(filter-out 찾을 문자, 대상문자)
filter와 반대로 찾을 문자가 있는 경우를 제외하고 저장한다.
$(join 원본문자, 붙일문자)
원본문자와 붙일문자를 붙여서 한 문자로 만든다.
$(dir 대상문자)
대상문자에서 파일문자를 제외한 경로명만 추출한다.
$(notdir 대상문자)
대상문자에서 파일명만 추출한다.
$(baseanme 대상문자)
대상문자에서 확장자를 제외한 문자를 알려준다.