include 지시자는 make 에게 하나 혹은 그 이상의 또 다른 makefile 을 읽어들이라고 말한다:
include filenames...
이는 -M 과 같은 컴파일러 플래그를 사용하여 소스에 기반한 makefile 을 생성하는 경우에 특히 유용하다. 만일 일부 C 파일들이 헤더파일을 포함할 때, 그러한 헤더는 gcc 에 의해 작성되어진 Makefile 에 포함되어질 것이다.
vpath 지시자 vpath 는 일부 필요조건의 집합이 어디에 존재하는지 명시하기 위해 사용할 수 있다. 형태는 vpath <pattern> <directories, space/colon separated> 이다.
<pattern> 은 아예 없거나 혹은 그 이상의 문자와 일치되는 % 를 가질 수 있다. 또한 VPATH 변수를 통해 전역적으로 할 수 있다:
vpath %.h ../headers ../other-directory
some_binary: ../headers blah.h
touch some_binary
../headers:
mkdir ../headers
blah.h:
touch ../headers/blah.h
clean:
rm -rf ../headers
rm -f some_binary
주목해서 봐야 하는 부분은 처음 등장하는 rule 이다. 이는 blah.h 를 prerequisite 으로 가지지만 blah.h 는 현재 작업 디렉토리가 아닌 ../headers/blah.h 에 생성된다. some_binary 의 생성을 위해 blah.h 를 현재 작업 디렉토리에서 검색하지만 존재하지 않기 때문이 그 다음으로 vpath 를 읽어들인다. vpath 의 %.h 는 ../headers 와 ../other-directory 에 존재한다는 것을 명시했기 때문에 이를 통해 blah.h 를 읽어올 수 있게 되는 것이다.
역슬래쉬(backslah, '\') 문자는 command 가 너무 길게 늘어질 때 이를 다중 행(multiple lines) 으로 만드는 기능을 제공한다.
some_file:
echo This line is too long, so \
it is broken up into multiple lines
.phony .PHONY 를 target 에 추가함으로써 make 가 phony target 을 파일의 이름과 혼동하는 것을 방지할 수 있다. 가령 clean 을 입력하여 불필요한 빌드 부산물 파일을 제거하려 할때 작업 디렉토리에 clean 이라는 이름의 파일이 존재한다면 clean 이 이미 존재하므로 작업이 수행되지 않을 수 있다. 이러한 상황에서 .phony 는 유용하게 쓰일 수 있다.
.delete_on_error 만일 command 가 0 이 아닌 종료 상태를 반환하는 경우 make 도구는 rule 의 실행을 중지할 것이다. 그리고 이는 prerequisite 로 전파된다.
DELETE_ON_ERROR 는 이러한 방식으로 실패한 rule 의 target 을 제거할 것이다. 이는 이전의 PHONY 와는 다르게 모든 target 에 영향을 준다.
.DELETE_ON_ERROR:
all: one two
one:
touch one
false
two:
touch two
false