2013-02-21 4 views
0

나는 규칙 I 표준 규칙과 다른 컴파일러 스위치를 몇 * .c 인 파일을 구축하고자하는메이크 암시 적 및 명시 적 규칙

*.o: *.c 
    gcc <certain compiler switches> 

에게 있습니다. *이 .c 규칙 : 나는 단순히 foo는과는 foobar의 명시적인 규칙은 * .o 인을 무시합니까 첫 번째 규칙

foo.o : foo.c 
foobar.o : foobar.c 
    gcc <other compiler switches> 

전에 추가 생각

?

+0

시도해 보셨습니까? Q :'<다른 컴파일러 스위치>는'foobar.o'뿐만 아니라'foo.o '에도 적용될 예정입니까? – bobbogo

+0

예, foo.o와 foobar.o는 동일한 컴파일러 스위치를 사용해야하지만 * .o : * .c와는 다릅니다. – KeithSmith

답변

0

메이크 파일에 많은 문제가 있습니다. *.o: *.c은 쉘 와일드 카드를 사용하며 거의 확실하게 원하는 것이 아닙니다. make 와일드 카드를 사용하여 패턴 규칙을 작성하고 싶을 수도 있습니다 — %.o: %.c. 나는이 정도 (패턴 규칙)를 좋아하지 않는다. 나는 항상 나의 메이크 파일에서 아주 명백하게하고 싶다. 같은 뭔가 : 당신이 맞는 볼

SRCS := foo.c foobar.c 
OBJS := ${SRCS:%.c=%.o} 

${OBJS}: %.o: %.c 
    gcc ${OPTS-${@D}} $< -o [email protected] 

이제 OPTS-fooOPTS-foobar을 정의 할 수 있습니다.

관련 문제