2015-01-17 3 views
0

이 정적 규칙의 메이크 코드 예의 니펫 와 % .o : % .c는 대상의 모든 종속성이 % .o 규칙에 의해 생성되고 % .o의 모든 종속성이 % .c 규칙에 의해 생성되고 레서피가 생성된다는 것을 설명합니다. 적용된?메이크 정적 규칙 구문 explaination

누군가가 그것을 명확히하십시오 :

1.What는 메이크 파일에서 정적 규칙이있는 구문을 설명?

2. 조리법이 % .o 및 % .c 규칙 모두에 적용됩니까? 대상의

3.Is의 IT 연결 : 모든 어떤 확장자를 제외한 모든 파일 이름을 포함 이 .c $ (전체) : $ (모두) 및 $ (모두) .O .O?

답변

1

스 니펫 :

objects = foo.o bar.o 

all: $(objects) 

$(objects): %.o: %.c 
     $(CC) -c $(CFLAGS) $< -o [email protected] 

가 확장 (변수 확장 후) : 각각에 대해, 짧은에, 그래서

foo.o: foo.c 
     $(CC) -c $(CFLAGS) $< -o [email protected] 
bar.o: bar.c 
     $(CC) -c $(CFLAGS) $< -o [email protected] 

이 쓰기위한 속기

all: foo.o bar.o 

foo.o bar.o: %.o: %.c 
     $(CC) -c $(CFLAGS) $< -o [email protected] 

을 대상 목록의 대상이 패턴을 적용하고 결과에 대한 정적 규칙을 만듭니다.

+0

Sir !!!!!! ** run : $ (objects) : % .o : % .c ** 그러면 recipe가 ** run **에도 적용됩니다. 실행 가능 ** 실행 **과 비슷합니다. –

+0

'run : $ (objects) : % .o : % .c'라고 쓸 수 없습니다. 그건 너무 많은 콜론이야. 정적 패턴 규칙에는 콜론으로 구분 된 정확히 세 부분이 있습니다. 대상 이름 목록, 각 대상 이름과 일치해야하는 첫 번째 패턴 및 선행 조건을 암시하는 선택적인 두 번째 패턴이 있습니다. 나는 당신의 질문을 정말로 이해하지 못합니다. – MadScientist