make명령어 사용법
여러 파일을 쉽게 컴파일하기
옛날에 공부하면서 정리해놨었는데 다시 기억해내기위해 정리해봄
1. make
-
사용하는 이유
큰 프로젝트라면 일일이 컴파일하기 어렵고 귀찮고
목적파일 만들다가gcc -c veryImportant.c -o veryImportant.c
이렇게 해버려서 아주 중요한 파일을 날려먹을수도 있기 때문에
make로 미리 세팅해놓는다면 쉽고 편하게 컴파일 할 수 있다. -
사용법
make명령어는 Makefile이 가장 중요하다.
규칙에 맞게 Makefile이라는 이름의 텍스트 파일을 작성해준 뒤
(대소문자도 정확히 구분해야했던거같음)
(작업 디렉토리 안에다가) make명령어를 실행하면 끝이다.
2. Makefile작성 규칙
Makefile에 들어갈 내용은 크게 두가지로 구분할 수 있다.
- 명령어 작성(의존성)
- 매크로
2.1 명령어 작성
1
2
3
(target file) : (dependent file 1) (dependent file 2)
(command 1)
(command 2)
위 형식이 가장 기본이다.
예를 들어 test.c파일이 있다고 했을 때
c파일을 목적파일로 변환시키게 하려면
1
2
test.o : test.c
gcc test.c -c -o test.o
Makefile안에 해당 내용을 작성하고 make명령을 실행하면 된다.
2.1.a 의존성 (dependent file)
만약 큰 프로젝트를 다루고 있다고 가정했을때
파일 하나만 수정하고 make 명령을 수행했는데
프로젝트 안의 모든 소스코드를 컴파일하는 것은
대충 생각해봐도 아주아주아주 비효율적인 행동이다.
따라서 make명령어에서는 그런일을 방지하기 위해 파일의 의존성을 명시하게 한다.///
1
2
test.o : test.c test.h
gcc test.c -c -o test.o
test.c와 test.h파일이 모두 변하지 않았으면 gcc test.c -c -o test.o
명령은 실행되지 않는다.
만약 test.c test.h중 하나라도 수정했으면 명령을 수행한다.
2.2 매크로
Makefile에서 자주 쓰는 구문들이 있다.
gcc나 파일의 이름들이 그 예다.
그런 키워드들을 매크로로 설정해서 간편하게 Makefile을 작성할 수 있다.
매크로를 사용해서 Makefile을 작성하면 다음과 같다.
1
2
3
4
CC = gcc
test.o : test.c
($CC) test.c -c -o test.o
매크로를 사용할때는 괄호와 $기호를 붙여줘야한다.
3. 팁
1
2
3
4
5
6
7
8
main.exe : test.o main.o
gcc test.o main.o -o main.exe
test.o : test.c
gcc test.c -c -o test.o
main.o : main.c
gcc main.c -c -o main.o
$make test.o 명령을 실행하면 test.o 파일만 만들수도 있다.
(target file) 이름이 make 뒤에 명령어로 쓰일수 있다는거라
1
2
clean:
rm -rf *.o *.exe
$ make clean
이러면 작업디렉토리의 목적파일과 실행파일을 지울 수 있다.
이걸 여러가지로 활용하면 된다.
댓글남기기