1. makefile簡單介紹:
? Windows系統里的 Visual studio/Dev C++等IDE工具(Integrated Development Environment)將C語言的預處理、編譯、匯編、鏈接等程序集成在一起,而在Linux系統下需要撰寫GCC命令才能完成編譯操作,當專案檔案很多時,效率太低了,因此采用Makefile的方法實作編譯的統一管理,
2. makefile的規則
目標:目標依賴
命令
目標是最終想要的檔案,一般為可執行檔案;目標依賴是生成可執行檔案所依賴的檔案;命令一般為GCC命令、shell命令、鏈接命令、objcopy命令等,
| 目標的概念 | 解釋 |
|---|---|
| 默認目標 | 當我們在make編譯時沒有給make指定要生成的目標,make就會選擇Makefile檔案中的第一個目標作為默認目標 |
| 多目標 | 一個規則中也可以有多個目標,多個目標具有相同的生成命令和依賴檔案 %.o:%.c |
| 偽目標 | 有時候我們設定一個目標,并不是真正生成這個檔案,如上面的clean目標,而是僅僅為了執行某個操作,例如.PHONY clean |
3. makefile的目標依賴
makefile通過比較目標依賴檔案和目標檔案的更新時間,當依賴檔案更新后,目標檔案才會隨著編譯更新,
但有一個問題,目標依賴檔案中的頭檔案更新不會被記錄到,導致目標檔案不會更新,這個問題可以通過gcc-M hello.c這個命令解決,
[xuanmiao@localhost Demo_makefile]$ gcc -M hello.c
hello.o: hello.c /usr/include/stdc-predef.h hello.h
4. makefile的自動變數
| 變數符號 | 含義 |
|---|---|
| $@ | 目標 |
| $^ | 目標依賴 |
| $< | 目標依賴串列的第一個依賴 |
| $? | 所有目標依賴中被修改的檔案 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/458447.html
標籤:其他
上一篇:初學Java時沒有理解的一些概念
下一篇:淺析AQS
