makefile概念和原理

首先我們討論一下makefile是什麼它爲什麼會存在

makefile是什麼?長話短說makefile是一種代碼管理工具,也是一種shell腳本

爲什麼會存在呢? 例如通常我們編譯一個 cpp 文件:

g++ main.cpp -o main

這樣的也許我們覺得很輕鬆 但是如果要編譯的文件數量有幾十個呢?

難道我們 g++ main.cpp server.cpp client.cpp ...... cpp  -o main 這樣寫嘛? 再者 我們每次修改之後都要重新編譯這些文件

又要重新寫 錯誤率不僅上升了,而且編譯效率也不高 所以我們引用了makefile 這種代碼管理工具

 

一.makefile的文件名種類:

1.Makefile    2.makefile   首字母大小寫都是可以的

二, makefile 的規則

        規則的三要素:目標,依賴, 命令

        格式: 第一行: 目標:依賴條件

                   第二行: table (必須的)  命令

三者的關係

通俗一點講就是   依賴(相當於原材料) -> 命令(加工)->  目標(產物)

 

我們先來寫一個 簡單的demo(後續我們將介紹相關的函數,變量和特殊的符號) 引用 一下makefile 是如何提高編譯效率的

效果如下:

實行make命令  當然我們要先安裝make  (很容易 就兩條命令的事這裏大家可以百度)

這裏我們可以看到只需要一條命令就可以 編譯整個文件 是不是很快捷

 

思考:當我們修改了main.cpp一個文件的時候,他會不會兩個cpp文件都重新編譯成 .o 的二進制文件呢?

答案是不會的,原理如下

這裏的 兩條規則就是因爲

第一條規則找不到依賴了  去尋找的新規則

總之  makefile內部的工作原理 會幫我們 檢測出誰是修改過的文件 (怎麼檢測的呢:根據文件最後一次修改的時間)

然後只編譯那個修改過的文件生成 .o 文件  然後重新通過命令生成可執行文件main

更多的C/C++ linux編程我會在下面的文章中陸續的分享,也可以關注‘奇牛學院’

來一起討論

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章