$@
: 목표 이름$*
: 목표 이름에서 확장자가 없는 이름$<
: 첫 번째 전제 조건의 파일 이름$?
: 목표 파일 보다 더 최근에 갱신된 파일 이름$^
: 현재 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 접미사, 문자열)
$(addsufix .c, memo main) => memo.c main.c
$(addprefix 접두어, 문자열)
$(addprefix src/, memo main) => src/memo src/main
$(shell <shell-command>)
SH = $(shell ls *.c) => shell 명령에 대한 결과가 변수에 들어감
$(subst 찾을 문자, 변경할 문자, 대상 문자)
"대상문자"에서 "찾을 문자"를 "변경할 문자"로 변경해 준다.
$(patsubst 찾을 패턴, 변경할 패턴, 대상 문자)
subst와 기능은 동일하나 확장자를 바꿀때 사용함
$(strip 대상문자)
대상문자에서 모든 공백을 1칸으로 줄인다. 여백이 많아도 모두 1칸으로
$(filter 찾을 문자, 대상문자)
대상문자에서 찾을 문자를 포함한 문자들을 찾아서 저장한다.
$(filter-out 찾을 문자, 대상문자)
filter와 반대로 찾을 문자가 있는 경우를 제외하고 저장한다.
$(join 원본문자, 붙일문자)
원본문자와 붙일문자를 붙여서 한 문자로 만든다.
$(dir 대상문자)
대상문자에서 파일문자를 제외한 경로명만 추출한다.
$(notdir 대상문자)
대상문자에서 파일명만 추출한다.
$(baseanme 대상문자)
대상문자에서 확장자를 제외한 문자를 알려준다.
감사합니다!