2012-10-26 91 views

回答

1

對此,有一個implicit rule。比方說,你有下面的Makefile:

CC=cc -g 

all: client 

client: client.c 
    $(CC) client.c -o client 

clean: 
    -rm -f client 

如果你只是想在目標文件,然後你只需要運行:

$ make client.o 

,你會得到的目標文件。然而,你也可以寫一個明確的規則,如:

%.o: %.c 
    $(CC) -c $< 

以前的規則是從任何.c文件對象(.o)文件建立的規則。 $<有助於獲取規則所依賴的文件的名稱。

如果你有幾個對象的文件,你可能要定義變量,則:

objects = client.o foo.o bar.o 

client: $(objects) 
    $(cc) -o [email protected] $(objects) 

$(objects): config.h 

clean: 
    -rm -f client $(objects) 

在這種情況下,objects是要編譯的目標文件相關的變量。在規則client中用作鏈接它們的依賴關係和參數,它也用於定義依賴於頭文件的規則(本例中爲config.h),而finalle用於clean規則以刪除它們以開始全部再次。

[email protected]是規則名稱的替換。在最後一種情況下,它將是client

manual of GNU Make包含很多應該啓發你的學習過程的例子。

+0

這就是我所說的「僅鏈接部分」。不用說,它不起作用。你碰巧知道我做錯了什麼? – usustarr

+0

如果沒有錯誤信息並且沒有正在處理的Makefile,很難說。 – gpoo

相關問題