$(MAKE) 또는 ${MAKE}는 make 스크립팅 언어에서 실제로 무엇을 의미합니까?

$(MAKE) 또는 ${MAKE}는 make 스크립팅 언어에서 실제로 무엇을 의미합니까?

전체 빌드 프로세스 중에 실행되고 $(MAKE)있거나 실제로 실행되는 내용입니다 ${MAKE}. make가장 간단한 용어로 "함수를 호출"하는 서브루틴과 같은 프로시저를 호출합니까, 아니면 자체 파일의 시작 부분까지 재귀 프로시저를 시작합니까?

답변1

make프로그램은 또는 MAKE와 같이 makefile에서 사용할 수 있는 변수를 설정합니다 . 후자는 쉘 스크립트가 구문을 인식하고 일부 스크립트 조각을 둘 사이에서 재사용할 수 있기 때문에 유용합니다.$(MAKE)${MAKE}

그 외에는 쉘과 다르게 make처리되기 때문에 쉘/make 구문 사이에는 겹치는 부분이 많지 않습니다 .$$

문제 해결 포인트: MAKE변수는 프로그램 이름이 실제로 지정되지 않을 수 있으므로 재귀에 도움이 됩니다.make(예: gmake, pmake)이며 동일한 프로그램에서 성공적으로 반복하려면 해당 정보가 필요합니다. 프로그램 make(이름이 다시 지정됨)은 변수 사용 여부에 관계없이 이 재귀를 인식합니다.

추가 자료:POSIX가 활성화됩니다.

답변2

$(MAKE)재정의하지 않는 한 현재 make 프로그램에 대한 경로를 포함합니다.

make구현 이름에 대해 make를 호출하는 경우 검색을 통해 $(MAKE)make 구현이 호출되므로 해당 이름만 포함해야 합니다 PATH. 예를 들어 다음과 같이 호출하여 이를 확인하세요.

cd /usr/bin
./make -f /dev/null | grep MAKE

절대 또는 상대 경로를 통해 make 구현을 호출하는 경우 $(MAKE)make 구현의 절대 경로 이름을 포함하십시오.

$(MAKE)이를 통해 make 파일에서 이것이 디버그 메시지와 함께 컴파일되고 모든 곳에 설치된 임시 바이너리인 경우에도 항상 동일한 make 프로그램을 호출하는 방법을 가질 수 있습니다.

참고: 다음을 호출하여 make 프로그램에 의해 설정된 초기 값을 얻을 수 있습니다.

$make -f /dev/null -p | grep MAKE

관련 정보