Linux下make/Makefile專案自動化構建工具
- 了解make和Makefile
- Makefile的撰寫規則
- make的執行規則
- 實際用法
- 專案構建的主要程序
了解make和Makefile
-
Makefile:是一個文本檔案,記錄的是一個專案的構建規則流程,
-
make:是一個工具,用來執行Makefile文本中的相關動作,如編譯、鏈接等,
-
簡單來說就是用Makefile編輯好想要執行的命令,然后用make來執行Makefi里面的命令,不用再去一步一步的輸入,
Makefile的撰寫規則
- 目標物件和依賴物件:比如一個test.c檔案,要將它編譯后生成一個test可執行檔案,那么test.c就是依賴物件,可執行檔案test就是目標物件,
- 語法規則:目標物件:依賴物件,換行后,插入制表符tab鍵,然后輸入要執行的命令,
test:test.c
??生成命令
- $@:表示目標物件; $^:表示依賴物件; $<:表示依賴物件的第一個
make的執行規則
- 在命令列中執行make指令,表示運行make解釋程式,程式會在當目錄下找到Makefile這個檔案,執行里面的專案構建規則,
- 在Makefile規則中,找到要生成的第一個目標物件,
- 先判斷目標物件是否存在,如果不存在則執行物件生成的命令,
- 如果目標物件已經存在,判斷是否重新生成,根據test.c原始碼檔案最后一次修改時間來對比,
- make每次只會在Makefile中找到第一個目標物件進行生成,完成后就會退出,不會再去生成第二個物件,
- make在生成目標物件時,會先去查找依賴物件的生成規則,先生成依賴物件,然后再去生成目標物件,
第5、6點在后面會詳細說
實際用法
-
首先準備一個test.c檔案,

-
vim Makefile編輯要執行的命令,注意換行后輸入的是tab,不是空格,

-
保存退出,命令列模式下執行make指令,系統就會找到Makefile中的專案構建規則進行對目標物件的生成,

專案構建的主要程序
程式的編譯程序主要分為:預處理,編譯,匯編,鏈接這四部,
在專案構建中,主要分為兩步:編譯與鏈接,
- 創建三個 .c檔案,test.c、test1.c、test2.c
- 在Makefile中先個各自生成他們的 .o檔案,就是先進行編譯,然后將他們進行鏈接,
$@:表示目標物件;
$^:表示依賴物件;
$<:表示依賴物件的第一個

這時我們執行make指令會發現之執行了第一個目標物件的生成,就是只生成的test.o,沒有執行后面的陳述句,這就是上面說到的make執行規則,每次只會在Makefile中找到第一個目標物件進行生成,完成后就會退出,不會再去生成第二個物件,
但是make在生成目標物件時,會先去查找依賴物件的生成規則,先生成依賴物件,然后再去生成目標物件,所以我們Makefile中進行修改,

這里先找到要生成的目標物件test,然后依賴物件有三個 .o檔案,但是現在并沒有生成 .o檔案,所以會先執行依賴檔案的生成規則,然后再進行鏈接,生成test這個目標物件,
這時我們再回傳命令列輸入make就可以發現他可以正常執行了,


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/271504.html
標籤:其他
上一篇:Linux基礎(較全)
