전체 빌드 프로세스 중에 실행되고 $(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