Makefile學習之路之(一)

2021-10-06 23:05:32 字數 1762 閱讀 9247

makefile 文字編輯三個要素

格式為:

目標:依賴

tab命令

目標:所謂目標為為主目標鋪墊分支(類似於乙個變數的名稱,它對應執行命令)

依賴:基礎檔案、編譯完成的檔案以及目標(命令基於的檔案)

命令:為目標執行的命令。(執行何種命令)

.phony 指定偽目標(偽目標會每次都被執行不進行檢查該目標是否為最新值)

簡單來說,如果乙個目標與執行makefile檔案目錄下存在的檔案重名,若假定該命令無任何依賴,則makefile執行時以其規則認定檔案目錄下檔案為最新檔案,則不會執行目標。因此,偽目標存在的意義便在於此。

targeta : targetb target c

echo

"i want to learn about linux!"

targetb:

echo

" hello "

targetc:

echo

"world"

該例子中targetb、targetc沒有依賴檔案,所以依賴為空,命令為echo命令。 而targeta 依賴於targetb與targetc。所以其結果如下:

echo

"hello "

hello

echo

"world "

world

echo

"i want to learn about linux"

i want to learn about linux

如果我在檔案目錄下建立乙個檔名為targetb的檔案後

zz@ubuntu:~/linux/make/makefile_file$ ls

makefile targetb

zz@ubuntu:~/linux/make/makefile_file$

執行結果如下:

zz@ubuntu:~/linux/make/makefile_file$ make

echo

"world "

world

echo

"i want to learn about linux"

i want to learn about linux

zz@ubuntu:~/linux/make/makefile_file$

可以發現其中targetb的目標被跳過不執行

此時我新增乙個偽目標

.phony: targetb

targeta: targetb targetc

echo

"i want to learn about linux"

targetb:

echo

"hello "

targetc:

echo

"world "

執行結果如下:

zz@ubuntu:~/linux/make/makefile_file$ make

echo

"hello "

hello

echo

"world "

world

echo

"i want to learn about linux"

i want to learn about linux

以上為今天的學習內容,與各位共同成長,與君共勉。

Makefile學習之一

makefile注意 1.makefile由三部分組成 目標,依賴,命令 2.命令行前必須有乙個tab鍵作為開頭 3.定義變數 objects main.o abc.o 使用 objects 表示使用變數 4.偽目標 phony phone clean clean rm edit 以上的 表示某些檔...

Makefile學習之路 2

讓你的makefile更專業。在上乙個makefile所在目錄下通過touch命令建立乙個clean檔案,執行make clean,將發現make總是提示clean檔案是最新的,而不是按我們期望的那樣對專案檔案進行清楚操作。make這樣的行為,是因為它將clean當做檔案來處理,在當前目錄下找到了c...

Makefile學習之路 3

特殊變數 在makefile中,有兩個變數特殊變數會經常用到 make和makecmdgoals。make變數表示的是當前處理makefile的命令名是什麼。當需要在makefile中執行另乙個makefile時,需要用到這個變數。makecmdgoals變數表示的是當前構建的目標名。從測試結果來看...