GNU make 및 makefile 구문은 Linux 쉘 및 bash와 유사하지만 동일하지는 않습니다. 예를 들어 중괄호는 쉘이나 bash와는 다르게 사용됩니다.
그러나 셸의 다른 많은 명령은 그대로 사용할 수 있습니다(예: echo, cd 등).
GNU Make를 쉘 위에 있는 인터프리터로 생각하는 것이 맞습니까?
답변1
GNU Make를 Linux 셸의 확장으로 생각하는 것이 맞습니까?
"쉘 확장"이라는 용어를 정의하는 방법에 따라 다릅니다.
"셸 확장"으로 셸에 기능을 추가하는 모든 프로그램을 정의할 수 있습니다.
이 경우 모든 명령줄 기반 프로그램은 "셸의 확장"이 됩니다.
그러나 Makefile이 "향상된 쉘 스크립트"로 간주될 수 있는지 궁금하다면 대답은 확실히 "아니요"입니다.
Makefile 규칙의 명령은 쉘 명령(쉘 스크립트의 행과 동일)이지만 Makefile은 쉘 스크립트와 완전히 다르게 사용됩니다.
그리고 (적어도 99%의 경우) 유효한 Makefile은 유효한 쉘 스크립트가 아니며 그 반대도 마찬가지입니다.
쉘 스크립트와 유사한 Makefile을 작성할 수 있지만 이는 전혀 의미가 없습니다.
답변2
GNU Make는 쉘 확장이 아닙니다. 이는 쉘과 다른 작업을 수행하는 별도의 프로그램이며 해당 구문은 일관성을 위해 쉘과 유사합니다.
~에서위키피디아그리고GNU Make 홈페이지:
Make는 대상 프로그램을 내보내는 방법을 지정하는 Makefile이라는 파일을 읽어 소스 코드에서 실행 가능한 프로그램과 라이브러리를 자동으로 빌드하는 빌드 자동화 도구입니다.
GNU Make는 소스 파일에서 프로그램의 실행 파일 및 기타 비소스 파일 생성을 제어하는 도구입니다. Make는 소스가 아닌 파일을 나열하는 makefile이라는 파일에서 프로그램을 빌드하는 방법과 이를 다른 파일에서 평가하는 방법을 알고 있습니다.
답변3
명령 섹션에 도달하면 매우 유사합니다.
Makefile의 형식은 다음과 같습니다.
- 대상(바이너리 파일)
- 전제조건(종속성/라이브러리)
- 명령(스크립트)
일부 Makefile은 모양/형식이 약간 다르지만(Makefile.am 대 package.mk 등) 일반적으로 이 형식을 따릅니다.