首先我們討論一下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編程我會在下面的文章中陸續的分享,也可以關注‘奇牛學院’
來一起討論