program이 작다면 하나의 file에 모든 소스코드를 담아서 작성할 수 있다.
program이 커지게 된다면, 코드의 line이 많아지고 더많은 모듈과 component가 필요.
큰 program을 하나의 file에 담았을 경우,
어떤 func? component? 호출관계?를 파악하는게 매우 어렵다.
또한 아주 작은 부분만 고쳐도 파일 전체를 새로 컴파일해야 한다.
컴파일 시간이 오래 걸린다. 여러 명이 동시에 그 파일에 변경을 가하기가 어렵다.
따라서 components를 여러 부분으로 나누는 것이 필요함.
(정리) 대규모 project를 여러 file에 나누어 관리하는 것이 바람직하다.
위와 같은 일들을 자동화하여 compile해줄 수 있는 것이 make 명령어이다.
make는 UNIX에서 사용하는 명령어이다.
make 명령어는 Makefile을 해석하여 수행시켜준다.
[Mm]akefile은 compile에 필요한 rules와 command가 기입된 script file이다.
--
제일 마지막에 생성되어야 하는 target을 첫번째로 작성해야 한다.
main.o와 this.o가 둘 다 funcs.h를 의존한다면, target에 두 file을 작성한다
main.o this.o : funcs.h
Assignment
: MACRONAME = marco_value
Usage
: ${MACRONAME} or $(MACRONAME)
example : HOME=/home/seop
$@
: Full target name
$*
: Name of the target, without suffix(확장자)
$<
: First dependency
$^
: Name of all dependency
$?
: target보다 최근에 생성된 파일들
example :
Phony target
: target이 file이 아니라 해당되는 action을 호출하기 위해 사용되는 경우가 있다.
all : 이 makefile에 있는 모든 규칙들을 적용하라
install : compile의 결과를 해당 directory에 설치하라
clean : compile과정 중에서 생성된 여러가지 file들(object file, binary file)을 지워라
distclean : 실행파일 말고 중간에 생성되는 여러 파일들이 있는데, 그것들을 삭제해라
보통 makefile을 부르는 순서 :
make (all) -> 전체 compile
make install -> compile결과가 재위치에 설치됨
make clean -> 필요없는 file들 지워짐
1
:2
: Predefined Macros3-1
: 반복되는 단어들에 대해서 Macro 사용3-2
: 반복되는 단어들에 대해서 Macro 사용4
: dependency file 만들기static library linking
:shared library linking
: