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變數表示的是當前構建的目標名。從測試結果來看...