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