[makefile] 대상이 지정되지 않은 경우 “만들기”앱은 빌드 할 기본 대상을 어떻게 알 수 있습니까?

대부분의 리눅스 앱은 다음과 같이 컴파일됩니다 :

make
make install clean

내가 이해했듯이 make는 빌드 대상의 이름을 인수로 사용합니다. 그래서 install사본 일부 파일을 한 후 그 대상이다 clean임시 파일을 제거하는 대상은.

그러나 make인수가 지정되지 않은 경우 어떤 대상이 작성 됩니까 (예 : 첫 번째 명령)?



답변

기본적으로, 이는 .일명 기본 목표로 시작하지 않는 첫 번째 대상을 처리하는 것으로 시작합니다 . 그러기 위해서는 다른 대상, 특히 첫 번째 대상이 의존하는 대상을 처리해야 할 수도 있습니다.

GNU 설명서 확인 커버 모든이 물건을, 그리고 놀라 울 정도로 쉽게 정보를 읽기입니다.


답변

다른 사람들을 몇 초 동안 저장하고 매뉴얼을 읽지 않아도되도록 저장하는 방법은 다음과 같습니다. 이것을 메이크 파일의 맨 위에 추가하십시오 :

.DEFAULT_GOAL := mytarget

mytarget은 이제 “make”가 실행되고 대상이 지정되지 않은 경우 실행되는 대상이됩니다.

이전 버전의 make (<= 3.80)가있는 경우 작동하지 않습니다. 이 경우 anon이 언급 한 것을 수행 할 수 있습니다 .make 파일의 맨 위에 추가하십시오.

.PHONY: default
default: mytarget ;

참조 :
https://www.gnu.org/software/make/manual/html_node/How-Make-Works.html


답변

GNU Make를 사용하면이라는 특수 변수를 사용하여 기본 make 대상을 지정할 수도 있습니다 .DEFAULT_GOAL. Makefile 중간에이 변수를 설정 해제해도 파일의 다음 대상이 기본 대상이됩니다.

참고 : Gnu Make 매뉴얼-특수 변수


답변