Makefile에서의 함수들
쉘 명령어 처리 함수 : shell
문자열 처리 함수들 : subst, patsubst, sort
공백문자 제거 함수 : strip
문자 필터링 함수들 : filter, filter-out, findstring, words, wordlist, word, firstword,
join, dir, notdir, suffix, addsuffix, addprefix, basename
변수명이라고 칭하는 것은 아니라 "매크로" or "매크로이름" 이지만. 편의상 변수명이라 칭하겠음.
사용자가 원하는 대로 작성해도 됨. 단, 미리 정해진 이름들은 제외. 구분을 위해서 일반적으로 대문자 사용.
[대상문자]는 변수에 문자를 담고, 그 변수를 사용해도 됨. $(변수명)
모든 함수의 결과는 변수에 넣을 수 있으며, 바로 출력도 가능하다.
make -f 메이크파일명 을 사용하면 make 시 사용할 Makefile을 지정할 수 있다.
shell, subst, patsubst
$(shell 쉘 명령어)
shell 명령에 대한 결과를 저장한다. $(변수명) <- 이 자리에 해당 결과가 들어가는 셈이다.
$(subst 찾을 문자, 변경할 문자, 대상 문자)
[대상문자]에서 [찾을 문자]를 [변경할 문자]로 변경해준다.
$(patsubst 찾을 패턴, 변경할 패턴, 대상 문자)
subst와 기능은 동일하나, 확장자를 바꿀 때 사용하는 듯.
$(매크로명:패턴=패턴), sort, strip
$(대상문자:찾는패턴=변경할패턴)
[대상문자] 의 내용 중 [찾는패턴]을 찾아서 [변경할패턴]으로 바꿔서 저장한다.
실제로 변경이 되거나 하는게 아니라 그냥 단순히 해당 문자를 찾아 바꾸는 것.
여기서만 유일하게 $(변수명) 이 아닌 변수명 을 사용한다. 대상문자 = 변수명.
patsubst와 동일한 기능(?)
$(sort 대상문자) [대상문자] 에서 정렬해 준다
$(strip 대상문자) [대상문자] 에서 모든 공백을 1칸으로 줄인다. 여백이 많아도 모두 1칸으로.
filter, filter-out, findstring,
filter
$(filter 찾을문자, 대상문자)
[대상문자]에서 [찾을문자]를 포함한 문자들을 찾아서 저장한다. [대상문자]는 여러개 지정이 가능하다.
구분자 없이 [대상문자]를 계속 쓰고 [대상문자를]와 구분할 때 한번만 콤바를 사용한다.
filter-out
$(filter 찾을문자, 대상문자)
filter와 반대로 찾아서 그 문자들은 제외한 나머지들을 저장한다. 사용법은 동일.
즉, 찾을문자가 포함되지 않은 문자들을 저장한다.
findstring
$(findstring 찾을문자, 대상문자)
[대상문자]에서 [찾을문자]만 뽑아서 저장한다. 없는 경우 공백으로 나온다.
word, words, wordlist
$(word, 위치, 대상문자) [대상문자]에서 [위치]번째 단어를 뽑아낸다.
$(words, 대상문자) [대상문자]에 단어의 개수를 알려준다.
$(wordlsit, 위치1, 위치2, 대상문자) [대상문자]에서 [위치1]부터 [위치2]까지 단어를 알려준다.
firstword, join, dir, basename
firstword
$(firstword 대상문자) [대상문자]에서 첫 단어를 알려준다.
join
$(join 원본문자, 붙일문자)
[원본문자]에 [붙일문자]를 붙여서 한 문자열로 만든다.
원본문자 원본문자, 붙일문자 붙일문자 처럼 여러가지도 된다. 원본문자와 붙일문자 사이만 구분자로 콤마를 사용.
[원본문자]와 [붙일문자] 가 차례대로 붙는다. [원본무자] 2개에 [붙일문자]가 1개이면 첫 [원본문자]에만 붙는다.
dir
$(dir 대상문자) [대상문자]에서 파일명을 제외한 경로만 추출해준다. 사실상 "/" 전까지만 뽑아내는 셈이다.
notdir
$(notdir 대상문자) [대상문자]에서 경로를 제외한 파일명만 추출해준다. 사실상 마지막 "/" 뒤의 글자를 뽑아내는 셈.
basename
$(basename 대상문자) [대상문자]에서 확장자를 제외한 문자를 알려준다. 경로가 있으면 경로도.
사실상 "." 전까지 모든 글자를 뽑아내는 셈.
suffix, addsuffix, addprefix
$(suffix 대상문자) [대상문자]에서 확장자만 추출한다. 사실상 "."과 그 이 후 글자를 뽑아내는 셈.
$(addsuffix 변경문자, 대상문자) [대상문자]에서 확장자를 바꿔준다. 사실상 "." 이 후의 글자와 바꾸는 셈.
$(addprefix 추가문자, 대상문자) [대상문자]의 앞에 [추가문자]를 붙인다. [추가문자] 쓰고 [대상문자]를 붙이는 셈.
'프로그래밍 > Linux Programming' 카테고리의 다른 글
[시그널] 시그널 집합(signal set) 처리. (0) | 2011.10.07 |
---|---|
시그널 처리. 과제 (0) | 2011.10.06 |
표준 파일 입출력 (0) | 2011.10.06 |
[Linux] 디렉토리 처리 함수들 opendir(), readdir(), chdir(), 간단 예제. (0) | 2011.10.05 |
[Linux] 저수준 파일처리. open(), read(), write(), lseek() 간단 예제. (3) | 2011.10.04 |