Search
🔵

bb2.1__1. title: Makefile 을 사용하면 gcc 에서 자주 사용되는 c, o, W, I, D 와 같은 플래그들을 변수로 묶어 관리할 수 있다.

생성
🚀 prev note
🚀 next note
14 more properties
Makefile은 그냥 빌드를 돕는 도구(from1)이므로 파일 내에서는 -c(참고7), -o 와 같은 플래그들이 사용된다(참고1,2). 약간 생소할 수 있는 플래그 I 를 이용해 헤더파일 디렉토리를 지정해줄 수 있다(참고4). W 로 시작하는 플래그들도 존재한다(참고5). 예를 들어 -Werror 플래그를 지정하는 경우 경고들이 모두 오류로 변경되어 컴파일이 불가능해진다(참고8).
종종 CMake 를 사용하다 보면 -D로 시작하는 괴상한 플래그들을 볼 수 있다(from2:librealsense의 파이썬 플래그). 이것도 마찬가지로 gcc 에서 사용되는 플래그이다. -D는 매크로를 정의할 때 사용된다. -DDEBUGDEBUG 를 정의하는 것이다. 따라서 #ifdef DEBUG 문이 실행될 수 있다. -DVARIABLE=VALUE 와 같이 값을 넣어 정의할수도 있다(참고3).
프로젝트 구조가 아래와 같다면,
. ├── Makefile ├── main.c ├── main.h ├── other.c └── other.h
Makefile
복사
Makefile 은 아래와 같이 만들 수 있다. 모든 커맨드에 반복적으로 사용되어야 하는 컴파일러나 컴파일러 플래그 같은 부분은 하나의 변수로 묶였음을 알 수 있다.
CC = gcc CFLAGS = -g main: main.o other.o $(CC) ${CFLAGS} -o main main.o other.o main.o: main.c main.h $(CC) ${CFLAGS} -c main.c other.o: other.c other.h $(CC) ${CFLAGS} -c other.c clean: rm -f main main.o other.o
Makefile
복사
Makefile
parse me : 언젠가 이 글에 쓰이면 좋을 것 같은 재료들.
1.
None
from : 과거의 어떤 생각이 이 생각을 만들었는가?
2.
supplementary : 어떤 새로운 생각이 이 문서에 작성된 생각을 뒷받침하는가?
1.
None
opposite : 어떤 새로운 생각이 이 문서에 작성된 생각과 대조되는가?
1.
None
to : 이 문서에 작성된 생각이 어떤 생각으로 발전되고 이어지는가?
참고 : 레퍼런스