2012-10-10 2 views
-1

gnu Makefile에서 어떻게 의존성이 작동합니까?gnu Makefile에서 어떻게 의존성이 작동합니까?

나는 Makefile을 생성 할 : - 를 (을 main.c에 main.patch을 적용, 우리의 exmaple에) 몇 가지 패치를 적용합니다 - 패치을 main.c 파일에서 토토라는 programm에를 만들

my_patch=./main.patch 
all: toto 

patch: $(my_patch) 
    echo "apply patch" 

main.o: main.c 
    gcc -o main.o -c main.c -Wall 

toto: patch main.o $(my_patch) 
    echo "build" 
    gcc -o toto main.o 

패치는 항상 적용됩니다 ... 내 질문에 나를 리드 : "GNU Makefile에서 어떻게 의존성이 작동합니까?" 나는 GNU에 알 수있는 방법

는 main.patch의 날짜가 도움 :)

답변

1

가짜 대상에 대한

감사 (이진 토토보다 작은 경우 main.patch을 적용 쓸모 있는지 확인 patch)은 혼란스러운 일입니다. patch 규칙은 main.c을 수정, 그래서 그 대상이 될 수 있습니다 :

my_patch=./main.patch 
all: toto 

main.c: $(my_patch) 
    echo "apply patch" 

main.o: main.c 
    gcc -o main.o -c main.c -Wall 

toto: main.o # no need to specify $(my_patch) here 
    echo "build" 
    gcc -o toto main.o 

P.S.에있는 동안 automatic variables을 소개 할 수도 있습니다. 메이크 파일은 깨끗하고 관리하기 편합니다.

main.o: main.c 
    gcc -o [email protected] -c $< -Wall 

toto: main.o # no need to specify $(my_patch) here 
    echo "build" 
    gcc -o [email protected] $^ 
관련 문제