평소 프로그램을 설치하다가 아래와 같은 커맨드를 실행해본 사람들이 있을 것이다.

make install

이런 명령어를 처음 보았을 때 굉장히 무섭게 느껴졌던 기억이 난다. 하지만 실상 파일을 열어 보면 별 거 없을지도 모른다. make install 명령이 하는 일은 그냥 install 에 해당하는 영역의 명령들을 정의된 의존관계에 따라 실행하는 것이다.

예를 들어, 아래와 같이 /usr/bin 과 같은 디렉토리에 파일을 복사한다거나, 더미 파일을 지운다거나 하는 일들이 Makefile 에 나열되어 있을 뿐일지도 모른다는 것이다(ref1,ref2).

install:
	cp ./a.py /usr/bin/a.py
	rm ./c_file.o
	rm -r ./dummy

빌드 의존성을 정의하기 위해 만들어진 파일을 이렇게 써먹는다는 것이 흥미롭다.


parse me : 언젠가 이 글에 쓰이면 좋을 것 같은 재료들.

  1. None

from : 과거의 어떤 생각이 이 생각을 만들었는가?

  1. [bb2.1. title: Makefile 은 그냥 타겟(Target), 의존성(Dependencies), 레시피(Recipe)로 빌드 규칙을 정의하여 증분 빌드(Incremental build)가 가능하도록 하는 도구이다.](https://janghoo.notion.site/bb2-1-title-Makefile-Target-Dependencies-Recipe-d3b4c24b51cf40b2a28e1147aabcd9cd)

supplementary : 어떤 새로운 생각이 이 문서에 작성된 생각을 뒷받침하는가?

  1. bb2.1_1.2. title: Makefile 은 원래 빌드 의존성을 정의하고 타겟으로 파일 이름을 명시하도록 만들어졌기 때문에 .PONY 라는 키워드를 넣어서 파일과 관련이 없음을 명시할 수 있다.

opposite : 어떤 새로운 생각이 이 문서에 작성된 생각과 대조되는가?

  1. bb2.1_2. title: 권한을 분리하기 위해 make 과 make install 을 분리한 것이다.