makefile簡單使用

2021-10-25 18:58:32 字數 1931 閱讀 6971

目標,依賴項,命令

<依賴

目標中的

第乙個目

標名字,

如果依賴

目標是以

模式

(< 依賴目標中的第乙個目標名字,如果依賴目標是以模式(%)定義的,那麼

《依賴目標中的

第乙個目

標名字,

如果依賴

目標是以

模式(《將是符合模式的一系列的檔案集。 注意,其是乙個乙個取出來的

$@ 規則中的目標

$^ 規則中的所有依賴

cc 即gcc

cflags 編譯時使用的選項

ldflags 鏈結庫使用的選項

variable=value;

variable:=value;

其中,=可以使用後面定義的變數,:=只能使用前面定義的變數;

字首@ 只輸出命令的執行結果,出錯的話停止執行;

字首- 命令執行有錯誤的話,忽略錯誤繼續執行;

無字首 輸出執行的命令以及命令執行的結果,出錯的話停止執行;

ifeq (arg1,arg2)   #判斷括號內兩個引數是否相等

...else

...endif

ifneq 和ifeq用法類似;

ifdef args

...else

...endif

$(shell )

或者``

all 所有目標的目標,其功能一般是編譯所有目標;

clean 用於刪除make建立的檔案

install 安裝已編譯好的程式,其實就是把目標可執行檔案拷貝到指定的目錄中

print 列出改變過的原始檔

tar 源程式打包備份

dist 建立乙個壓縮檔案,.gz

tags 更新所有目標

check 或 test 一般用來測試makefile流程

(1) % 表示乙個或任意多個字元

(2) 目標中需要有%,依賴目標也可以有%,依賴目標的%取值取決於目標的%取值;

(3) %發生在執行時;

範例:

%.o: %.c

$(cc) -c $(cflags) $(cppflags) $< -o $@

將所有的.c生成.o檔案

(4) 老式風格字尾

.c.o 等價於 %.o: %c

.suffixes用來定義預設字尾表

範例:

.suffixes: .c .cpp .o
make -c diretory

跳轉到指定目錄下,執行該目錄下的makefile檔案

模式字串替換函式

格式:

$(patsubst ,,)

使用text裡面和pattern符合的字串替換成replacement字串

make
make 後面可以追加選項;

make -c ../../test     # 切換當前工作目錄到指定目錄下,執行該目錄下的makefile檔案
make 後面可以追加變數定義

make "cflag = -g"  # 給makefile檔案新增乙個變數,若變數已經存在覆蓋其初始值
make 後面可以追加生成目標

make add.o  # 以add.o為目標生成檔案,不指定,預設makefile第乙個目標
# 編譯時,優先在path尋找庫

ldflag= -wl,-rpath=/path

g++ -o file.o file.c $(ldflag)

Makefile的簡單使用

簡介 乙個工程中的原始檔不計其數,其按型別 功能 模組分別放在若干個目錄中,makefile定義了一系列的規則來指定,哪些 檔案需要先編譯,哪些檔案需要後編譯,哪些檔案需要重新編譯,甚至於進行更複雜的功能操作,因為 makefile就像乙個shell 指令碼一樣,其中也可以執行作業系統的命令。lin...

makefile的簡單使用

main.c include test1.h include test2.h include int main test1.c include test1.h include void test1 func char str test1.h ifndef test1 h define test1 h...

makefile的簡單使用

乙個工程中的原始檔不計其數,其按型別 功能 模組分別放在若干個目錄中,makefile定義了一系列的規則來指定,哪些檔案需要先編譯,哪些檔案需要後編譯,哪些檔案需要重新編譯,甚至於進行更複雜的功能操作,因為 makefile就像乙個shell指令碼一樣,其中也可以執行作業系統的命令。linux 環境...