變數的定義使用 "name := value" :
cc := gcc
target := hello.out
複製**
變數的使用"$(name)":
$(target) : func.o main.o
$(cc) -o $(target) func.o main.o
複製**
func.c原始檔如下:
void fun
()複製**
main.c原始檔如下:
extern void fun();
int main
()複製**
makefile原始檔如下:
cc := gcc
target := hello.out
hello.out :main.o func.o
$(cc) -o $(target) main.o func.o
main.o:main.c
$(cc) -o main.o -c main.c
func.o:func.c
$(cc) -o func.o -c func.c
.phony:rebuild clean all
rebuild:clean all
all:$(target)
clean:
rm *.o $(target)
複製**
命令列執行結果如下:
分析:從執行結果來看,呼叫引用變數,有助於維護**,當需要改變編譯器和目標名稱的時候,**維護性很強,改動性很小。參看程式設計示例2
main.c func.c 檔案內容均與程式設計實驗1保持一致,修改makefile中編譯器和目標檔案的名稱;makefile**如下:
cc := g++
target := hello-world.out
hello.out :main.o func.o
$(cc) -o $(target) main.o func.o
main.o:main.c
$(cc) -o main.o -c main.c
func.o:func.c
$(cc) -o func.o -c func.c
.phony:rebuild clean all
rebuild:clean all
all:$(target)
clean:
rm *.o $(target)
複製**
命令列執行結果如下: makefile變數的定義
一 變數名 makefile變數名是不包括 前置空白和尾空白的任何字串。1 變數名最好由字母 數字和下劃線組成 儘管在gnu make中沒有對變數的命名有其它的限制,但是字母 數字和下劃線以外的字元 可能會在make的後續版本中被賦予特殊的含義。2 變數名大小寫敏感 3 變數名中可以包含函式或者其它...
MakeFile預定義變數
makefile中常見預定義變數 命 令 格 式 含 義 ar庫檔案維護程式的名稱,預設值為ar as匯程式設計序的名稱,預設值為as ccc編譯器的名稱,預設值為cc cppc預編譯器的名稱,預設值為 cc e cxxc 編譯器的名稱,預設值為g fcfortran編譯器的名稱,預設值為f77 r...
Makefile預定義變數
含義 不包含副檔名的目標檔名稱。所有的依賴檔案,以空格分開,並以出現的先後為序,可能包含重複的依賴檔案。第乙個依賴檔案的名稱。所有的依賴檔案,以空格分開,這些依賴檔案的修改日期比目標的建立日期晚。目標的完整名稱。所有的依賴檔案,以空格分開,不包含重複的依賴檔案。如果目標是歸檔成員,則該變數表示目標的...