나만의 라이브러리 만들기
42cursus 과정을 하면서 필요한 함수들에 대해 미리 구현하고 라이브러리화 하여 makefile과 라이브러리에 대한 이해도를 늘리는 것이 목적이라고 생각하기 때문에 각각 함수의 구현보다 목적을 위주로 기록하고자 한다.
.h
파일은 하나를 가지는 것을 기준으로 한다.
또한 bonus 파트 이외의 본인이 추가하고 싶은 파일이 있다면 그 때 _bonus.c
, _bonus.h
파일을 생성하고 Bonus 파트는 _bonus.H
를 붙이지 않는다.
NAME
변수는 흔히들 사용하는 TARGET
, 즉 마지막에 만들고자 하는 결과물의 이름을 말한다. 본 과제에서는 libft.a
SRCS
변수는 mandatory part의 .c
파일들을 모아두는 역할을 하는 변수로 사용했다.
물론 NAME
처럼 변수명이 강제되지 않는다.
SRCS_B
변수는 bonus part의 .c
파일들을 모아두는 역할을 하는 변수로 사용했다.
OBJS
변수는 SRCS
변수의 값들을 .o
로 변경시킨 값을 가지도록 했다. (단순히 이름만 변경)
OBJS_B
변수는 bonus part의 .o
파일들을 모아두는 역할을 하는 변수로 사용했다.
이 외의 변수들은 각각 구현하는 사람의 성향에 따라 만들 수도 있고 없는 부분이라고 생각해서 기록하지 않는다.
all
은 make
를 사용했을 때 최종적인 결과에 대한 실행이 일어나도록 설계하면 된다.
clean
은 make
과정에서 생성된 .o
파일에 대해 삭제하는 기능을 구현하면 된다.
fclean
은 make
과정에서 생성된 모든 파일에 대해 삭제하는 기능을 구현하면 된다.
re
는 재차 fclean
이후 make
를 했다고 생각하면 된다. (make
와 관련된 모든 것을 삭제하고 다시 make
)
bonus
는 bonus part에 대한 make
를 수행하는 기능을 구현하면 된다.
restrict 키워드 norm 주의
mem 관련 1바이트씩 주소를 접근해야할 경우 unsigned char* 명시적 캐스팅
tester를 너무 믿지 말 것..
makefile relink 주의
ifndef를 통해 변수를 사용해 all, bonus의 relink를 막았다.
아카이브 사용법 알아두기
cc = cc!