2012-10-10 76 views
-1

如何依賴gnu Makefile?如何依賴gnu Makefile?

我想創建一個Makefile其中: - 將應用一些補丁(我們〔實施例,適用於main.c中main.patch) - 創建一個名爲從修補main.c文件,TOTO 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 make它也沒用適用main.patch如果main.patch的日期比二進制TOTO小

感謝您的幫助:)

回答

1

的假目標( 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 

附:當你在它的時候,你也可以介紹automatic variables; makefile文件更清潔,更易於維護:

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] $^