makefile                
            GNU 패턴 규칙
        
        
            
    수색…
기본 패턴 규칙
 패턴 규칙은 대상의 단일 % 문자로 표시됩니다. % 는 줄기 라는 비어 있지 않은 문자열과 일치합니다. 선행 조건 목록에 나타나는 모든 % 대신 스템이 사용됩니다. 
예를 들어,이 규칙은 다음과 같습니다.
%.o: %.c
    $(CC) $(CFLAGS) -c $< -o $@
 .o 끝나는 대상과 일치합니다. 대상이 foo.o 인 경우 스템은 foo 되고 foo.c 를 foo.o 컴파일합니다. 목표 및 전제 조건은 자동 변수를 사용하여 액세스 할 수 있습니다. 
여러 패턴 규칙과 일치하는 대상
대상이 여러 패턴 규칙과 일치하면 make는 전제 조건이 존재하거나 작성 될 수있는 대상을 사용합니다. 예 :
%.o: %.c
    $(CC) $(CFLAGS) -c $< -o $@
%.o: %.s
    $(AS) $(ASFLAGS) $< -o $@
 foo.c 또는 foo.s 중 어느 foo.s 존재하는지에 따라 foo.c 를 foo.o 컴파일하거나 foo.s 를 foo.o 어셈블합니다. 
여러 규칙에 존재하거나 작성 가능한 선행 조건이있는 경우 make는 가장 짧은 줄기와 일치하는 규칙을 사용합니다. 예 :
f%r:
    @echo Stem is: $*
fo%r:
    @echo Stem is: $*
 두 번째 규칙을 사용하여 대상 foo.bar Stem is: o.ba . Stem is: o.ba 입니다. 
여러 개의 규칙이 가장 짧은 줄기와 일치하면 make는 Makefile의 첫 번째 줄을 사용합니다.
패턴 규칙의 디렉토리
 대상 패턴에 슬래시가 포함되어 있지 않으면 make는 일치시키기 전에 빌드하려는 대상에서 디렉토리 부분을 제거합니다. 그런 다음 디렉토리가 줄기 앞에 놓입니다. 줄기가 대상 이름과 전제 조건을 작성하는 데 사용되면 디렉토리 부분이 제거되고 % 대신 줄기가 대체되고 마지막으로 디렉토리가 문자열 앞에 놓입니다. 예 : 
foo%.o: %.c
    $(CC) $(CFLAGS) -c $< -o $@
 lib/foobar.o 와 일치 할 것입니다 : 
-  줄기 ( $*) :lib/bar
-  대상 이름 ( $@) :lib/foobar.o
-  필수 조건 ( $<,$^) :lib/foobar.c
 이 예제에서 lib/foo%.o 규칙은 더 짧은 줄기와 일치하기 때문에 foo%.o 규칙보다 우선합니다. 
여러 대상이있는 패턴 규칙
패턴 규칙에는 여러 개의 대상이있을 수 있지만 일반 규칙과 달리 모든 대상을 만드는 것은 제조법입니다. 예 :
debug/%.o release/%.o: %.c
    $(CC) $(CFLAGS_DEBUG) -c $< -o debug/$*.o
    $(CC) $(CFLAGS_RELEASE) -c $< -o release/$*.o
유효한 규칙은 디버그 객체와 릴리스 객체 중 하나를 빌드해야 할 때 객체를 빌드합니다. 우리가 다음과 같이 쓴다면 :
debug/%.o release/%.o: %.c
    $(CC) $(CFLAGS) -c $< -o $@
 debug/*.o 또는 release/*.o 하나만 빌드 할 때 작동하지만 둘 다 빌드해야하는 경우 첫 번째 대상을 빌드합니다 (두 번째 대상을 최신으로 간주합니다).