編寫Makefile規則

一個工程中的源文件不可勝數,其按類型、功能、模塊分別放在若干個目錄中,makefile定義了一系列的規則來指定,哪些文件須要先編譯,哪些文件須要後編譯,哪些文件須要從新編譯,甚至於進行更復雜的功能操做,由於 makefile就像一個shell腳本同樣,其中也能夠執行操做系統的命令。shell

Makefile規則spa

目標:依賴.................................操作系統

tab鍵 命令
可以執行的條件:a、目標不存在 b、依賴已更新
這就是最基本的規則。
標一般是要生成的文件的名稱,一般是可執行文件或目標文件,也能夠是一個執行動做的名稱,好比clean。
依賴是用來產生目標的材料,一個目標常常有幾個依賴。命令是生成目標時執行的動做,一個規則能夠包含有幾條命令,每一個命令佔一行,注意每一個命令前面必須有一個tab字符。code

下面是一個簡單的Makefile的編寫。blog

hello:hello.c a.c  
    gcc -o hello hello.c a.c

也能夠是下面的形式編譯

hello:hello.o a.o  
    gcc -o hello hello.o a.o  
hello.o:hello.c  
    gcc -o hell.o -c hello.c  
a.o:a.c  
    gcc -o a.o -c a.c

以上的規則與第一個同樣,這裏-c表示是隻編譯不連接。class

上面的規則還能夠用通配符來表示gcc

hello:hello.o a.o  
    gcc -o $@  $^  
%.o:%.c  
    gcc -o $@ -c $

還能夠執行相應的動做file

hello:hello.o a.o  
    gcc -o $@  $^  
%.o:%.c  
    gcc -o $@ -c $<  
clean:  
    rm *.o hello

這是編寫Makefike最簡單的規則。gc

相關文章
相關標籤/搜索