일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- c++ 정보은닉
- react-native
- Expo
- CSS
- react
- 스탠실 버퍼 튜토리얼
- react native 타입스크립트
- react native ios 기기 연결
- 리액트 네이티브 설치 오류
- javascript
- react native typescript navigation
- 벡터와 리스트의 차이
- unity stencil buffer
- GitHub
- node.js
- html
- 스탠실 버퍼 사용
- node
- react native typescript navigate
- react native typescript
- stencil buffer
- c++ using
- 싸이월드
- cyworld
- react native accessible
- react native mac
- 리액트 네이티브 맥
- react native
- C++
- 스탠실 버퍼 시작
- Today
- Total
혀니의 이거저거 뿌시기
Makefile 공부 본문
<makefile 공부>
make : 파일 간의 종속 관계를 파악하여 Makefile(기술파일)에 적힌 대로 컴파일러에 명령하여 SHELL명령이 순차적으로 실행될 수 있게 함.
Makefile 장점 : 1. 각 파일에 대한 반복적 명령의 자동화로 인한 시간 절약
2. 프로그램의 종속 구조를 빠르게 파악할 수 있으며 관리가 용이
3. 단순 반복 작업 및 재작성을 최소화
Makefile 구조: 1. 목적파일(Target) : 명령어가 수행되어 나온 결과를 저장할 파일
2. 의존성(Dependency): 목적파일을 만들기 위해 필요한 재료 ( : 에서 : 뒤에 오는 애들. )
3. 명령어(Command): 실행되어야 할 명령어들
4. 매크로(macro): 코드를 단순화시키기 위한 방법 (TARGET = libft.a 등…)
+내부 매크로 (ex) $@ : 현재 타겟의 이름/ $^ : 현재 타겟의 종속 항목 리스트)
더미 타겟: 파일을 생성하지 않는 파일 (ex) clean, fclean 등…)
https://xn--vj5b11biyw.kr/126 => library 파일 사용해서 코드 실행하는 방법
예제
CC=gcc
CFLAGS = -Wall -Wextra -Werror
TARGET = libft.a
SOURCE_FILE = ft_bzero.c ft_calloc.c ft_memset.c ft_strdup.c
INCLUDE = include/libft.h
OBJS = ${SOURCE_FILE:.c=.o} //SOURCE_FILE 에서 .c 를 찾아 .o 로 변경.
.c.o: //사용자가 설정 안해줘도 기본저긍로 gcc해서 변환해줄 수도 있지만 거기에 특별한 규칙을 넣고싶을 때는 .c.o로 gcc 규칙을 변경시켜줌.
${CC} ${CFLAGS} -I ${INCLUDE} -c $< -o ${<: .c=.o} // $< : 현재 목표 파일보다 더 최근에 갱신된 파일명, 첫 번째 종속물 이름
//<: : 현재 목표파일보다 최근에 갱신된 파일명에서 두번째 종속물 이름
${TARGET} : ${OBJS} //make 만 했을때 만들어지는 결과. OBJS들을 필요로 함.
ar rc $@ ${OBJS} //ar : library archive 를 만들거나 관리.. -r : 새로운 오브젝트 파일이면 추가, 기존 파일이면 치환함.
-c : 기본적으로 표준 에러로 기록되어지는 진단 메시지의 출력 제한.
All : ${TARGET} //all : 더미타겟이 바로 첫 번째 타겟으로써 작용됨.
Clean:
rm -f ${OBJS} //object 파일을 지움
Fclean:
rm -f ${OBJS} ${TARGET} //object파일들과 target 파일을 같이 지움 (-f : 삭제할 건지 다시 묻지 않고 바로 삭제)
Re: fclean all //fclean 동작 실행 후 all 동작 수행한다는 뜻.