답변:
일반적인 아이디어는 make
(합리적으로) 최소한의 재 빌드 를 지원 한다는 것입니다. 즉, 프로그램의 어떤 부분이 다른 부분에 의존하는지 알려주는 것입니다. 프로그램의 일부를 업데이트하면 그에 의존하는 부분 만 다시 빌드됩니다. 쉘 스크립트로이 작업을 수행 할 수 는 있지만 훨씬 더 많은 작업 이 될 것입니다 (모든 파일에서 최종 수정 날짜를 명시 적으로 확인하는 등). 쉘 스크립트의 유일한 대안은 매번 모든 것을 다시 빌드하는 것입니다. 작은 프로젝트의 경우 이것은 완벽하게 합리적인 접근 방식이지만 큰 프로젝트의 경우 전체 재 구축에 1 시간 이상이 쉽게 걸릴 수 있습니다.을 사용 make
하면 1 ~ 2 분 안에 동일한 작업을 쉽게 수행 할 수 있습니다.
적어도 광범위하게 유사한 기능을 가진 몇 가지 대안이 있다고 덧붙여 야 할 것입니다. 특히 대규모 프로젝트에서 몇 개의 파일 만 다시 빌드하는 경우 일부 파일 (예 : Ninja )이 make보다 훨씬 빠릅니다.
쉘 스크립트로는하기 어려운 여러가지 일들이 있습니다 ...
Make는 소스 파일을 변경할 때 필요한 파일 만 다시 컴파일되도록합니다.
예를 들면 :
final : 1.o 2.o
gcc -o final 1.o 2.o
1.o : 1.c 2.h
gcc -c 1.c
2.o : 2.c 2.h
gcc -c 2.c
파일 2.h
만 변경하고 make
실행하면 3 개의 명령이 모두 역순으로 실행됩니다.
파일 1.c
만 변경하고 make
실행하면 처음 두 명령 만 역순으로 실행됩니다.
자신의 쉘 스크립트로이를 수행하려면 많은 if/else
검사 가 필요합니다 .
rsync -r -c -I $SOURCE $DEST_DIR
쉘에서 이와 같은 것을 사용하십시오 .
위와 마찬가지로 Make는 선언적 (-ish) 병렬 프로그래밍 언어입니다.
변환 할 그래픽 파일이 4,000 개이고 CPU가 4 개 있다고 가정 해 보겠습니다. CPU를 포화시키면서 안정적으로 수행 할 10 줄 셸 스크립트 (여기서는 관대함)를 작성해보십시오.
아마도 진짜 질문은 사람들이 왜 쉘 스크립트를 작성하는 것을 귀찮게 하는가입니다.