Linux 應用編程之 "一文搞定 Makefile"-下-
ID:嵌入式情報局
作者:情報小哥
1 指定使用 Makefile 文件
在命令行中使用 make 命令,makefile 會在默認路徑中查找對應的 makefile 文件來進行工程管理,我們一般把對應的 makefile 文件名命名爲 Makefile 和 makefile 等,如果名字不匹配可能無法找到對應的 makefile 文件, 比如:
makefile 文件名
Makefile 文件名
MAKEFILE 文件名-編譯失敗
從上面的實驗現象可以瞭解到 make 會查找默認的 makefile 文件名,如果沒有找到規定的文件名就會報相應的故障。
不過如果平時在一個目錄下存在多個 makefile 文件的時候,一般我們都會通過不同命名來進行區分,那麼該如何指定對應的 makefile 文件進行識別解析呢 ? 可以使用 make -f 選項, 如下圖所示:
2 註釋文本
在開發過程中存在需要註釋掉 makefile 文件相應文本行可以在文件的行首使用#號:
上面是正常進行makefile 編譯目標文件的完整實例,並且輸出了正確的結果, 然後小哥使用 #號屏蔽掉前面兩行, 如下圖所示:
繼續執行 make 命令,根據 makefile 的規則,會默認編譯 Test1.o 目標文件:
這樣我們獲得了正確的結果,說明註釋生效。
3 取消回顯文本
在 makefile 使用過程中默認是會把相應的處理過程信息進行回顯,這樣能夠讓開發者更好的瞭解 makefile 的處理過程.
不過,如果回顯信息非常的龐大也是不利於開發者分析的,所以編輯人員可以使用@來取消相關信息的回顯,如下圖所示:
在命令 tab 鍵後加入@
這裏我們可以看到使用 make 以後沒有像之前使用的 makefile 文件那樣存在回顯的命令行信息了。
4 僞目標的使用
在 makefile 文件中有時候執行一些不需要有依賴命令的目標,稱爲僞目標。
上面是對應的 makefile 文件,其中裏面加入僞目標 clean,通過使用. PHONY 修飾,這樣可以直接使用 make clean 來執行對應的命令。
上面執行 make clean 確實執行了清除操作。
5 變量的使用
在 makefile 中爲了減少代碼的重複,使用變量的概念來簡化編寫,如下面的 makefile 進行如下改造:
使用 $(obj) 來代替所有的目標文件,以後需要添加其他目標文件的話就只需要在變量 obj 處進行相應修改即可。
同時系統還存在其他默認的自動化變量,這樣可以大大簡化 makefile 文件,便於設計和後期維護,如:
-
$^ 表示所有的依賴文件
-
$@ 表示生成的目標文件
-
$< 代表第一個依賴文件
-
等等
makefile 基礎知識點小哥暫時就講到這裏,其實大部分工程項目自己完完全全編寫的並不是很多,更多的修修改改,所以遇到了具體的疑問在進行查找或許效率更高。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/sDR6khgEDUaPZA32gYh3rQ