makefile 4 變數的定義與使用

2021-09-11 11:36:51 字數 1411 閱讀 7609

變數的定義使用 "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預定義變數

含義 不包含副檔名的目標檔名稱。所有的依賴檔案,以空格分開,並以出現的先後為序,可能包含重複的依賴檔案。第乙個依賴檔案的名稱。所有的依賴檔案,以空格分開,這些依賴檔案的修改日期比目標的建立日期晚。目標的完整名稱。所有的依賴檔案,以空格分開,不包含重複的依賴檔案。如果目標是歸檔成員,則該變數表示目標的...