티스토리 뷰

목차


    반응형

    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와 기능은 동일하나, 확장자를 바꿀 때 사용하는 듯.

    [Makefile_1]


    결과 






    $(매크로명:패턴=패턴), sort, strip


    $(대상문자:찾는패턴=변경할패턴)
    [대상문자] 의 내용 중 [찾는패턴]을 찾아서 [변경할패턴]으로 바꿔서 저장한다.
    실제로 변경이 되거나 하는게 아니라 그냥 단순히 해당 문자를 찾아 바꾸는 것. 
    여기서만 유일하게 $(변수명) 이 아닌 변수명 을 사용한다.  대상문자 = 변수명.
    patsubst와 동일한 기능(?)

    $(sort 대상문자)   [대상문자] 에서 정렬해 준다 

    $(strip 대상문자)  [대상문자] 에서 모든 공백을 1칸으로 줄인다. 여백이 많아도 모두 1칸으로.

    [Makefile_2]

    결과







    filter, filter-out, findstring, 


    filter
    $(filter 찾을문자, 대상문자)
    [대상문자]에서 [찾을문자]를 포함한 문자들을 찾아서 저장한다. [대상문자]는 여러개 지정이 가능하다. 
    구분자 없이 [대상문자]를 계속 쓰고 [대상문자를]와 구분할 때 한번만 콤바를 사용한다.

    filter-out
    $(filter 찾을문자, 대상문자)
    filter와 반대로 찾아서 그 문자들은 제외한 나머지들을 저장한다. 사용법은 동일.
    즉, 찾을문자가 포함되지 않은 문자들을 저장한다.

    findstring
    $(findstring 찾을문자, 대상문자)
    [대상문자]에서 [찾을문자]만 뽑아서 저장한다. 없는 경우 공백으로 나온다.

    word, words, wordlist
    $(word, 위치, 대상문자)     [대상문자]에서 [위치]번째 단어를 뽑아낸다.
    $(words, 대상문자)           [대상문자]에 단어의 개수를 알려준다.
    $(wordlsit, 위치1, 위치2, 대상문자)  [대상문자]에서 [위치1]부터 [위치2]까지 단어를 알려준다.

    [Makefile_3]

    결과






    firstword, join, dir, basename

    firstword
    $(firstword 대상문자)    [대상문자]에서 첫 단어를 알려준다.

    join
    $(join 원본문자, 붙일문자)  
    [원본문자]에 [붙일문자]를 붙여서 한 문자열로 만든다.

    원본문자 원본문자, 붙일문자 붙일문자    처럼 여러가지도 된다. 원본문자와 붙일문자 사이만 구분자로 콤마를 사용.
    [원본문자]와 [붙일문자] 가 차례대로 붙는다. [원본무자] 2개에 [붙일문자]가 1개이면 첫 [원본문자]에만 붙는다.


    dir
    $(dir 대상문자)   [대상문자]에서 파일명을 제외한 경로만 추출해준다. 사실상 "/" 전까지만 뽑아내는 셈이다.

    notdir
    $(notdir 대상문자) [대상문자]에서 경로를 제외한 파일명만 추출해준다. 사실상 마지막 "/" 뒤의 글자를 뽑아내는 셈.


    basename
    $(basename 대상문자) [대상문자]에서 확장자를 제외한 문자를 알려준다. 경로가 있으면 경로도.
                                      사실상 "." 전까지 모든 글자를 뽑아내는 셈.

    [Makefile_4]


    결과








    suffix, addsuffix, addprefix

    $(suffix 대상문자)                        [대상문자]에서 확장자만 추출한다.   사실상 "."과 그 이 후 글자를 뽑아내는 셈.
    $(addsuffix 변경문자, 대상문자)    [대상문자]에서 확장자를 바꿔준다.    사실상 "." 이 후의 글자와 바꾸는 셈.
    $(addprefix 추가문자, 대상문자)    [대상문자]의 앞에 [추가문자]를 붙인다. [추가문자] 쓰고 [대상문자]를 붙이는 셈.

    [Makefile_5]

    결과


    유용한 정보가 되셨다면 아래 손가락 버튼 한번 눌러주세요 ^-^
    반응형