makefile

makefile 語法:html

目標文件:生成目標文件的依賴文件shell

生成目標文件所須要執行的動做(必須以tab鍵開頭)優化

 

經常使用變量表明的意思: $@--目標文件,$^--全部的依賴文件,$<--第一個依賴文件.net

                                     ~--當前用戶目錄,*全部符號的通配符調試

 

 經常使用的查找包含符號:-I 將目標做爲第一個尋找頭文件的目標htm

                                    -L將目標做爲第一個尋找庫文件的目標blog

                                    -l在目標中尋找.so文件,如-lword在指定目錄尋找libworld.so這個動態庫文件編譯

 

make能夠自動推導文件以及文件依賴關係後面的命令,因而咱們就不必去在每個[.o]文件後都寫上相似的命令,由於,咱們的make會自動識別,並本身推導命令。只要make看到一個[.o]文件,它就會自動的把[.c]文件加在依賴關係中,若是make找到一個whatever.o,那麼whatever.c,就會是whatever.o的依賴文件。而且 cc -c whatever.c 也會被推導出來。因此這樣也是可行的  whatever.o : defs.h,固然這樣會下降makefile的可讀性。模板

僞目標:變量

爲了不和文件重名的這種狀況,咱們可使用一個特殊的標記「.PHONY」來顯示地指明一個目標是「僞目標」,向make說明,無論是否有這個文件,這個目標就是「僞目標」。

只要有這個聲明,無論是否有「clean」文件,要運行「clean」這個目標,只有「make clean」這樣。因而整個過程能夠這樣寫:

    .PHONY: clean

    clean:

           rm *.o temp

命令:

顯示命令:echo  。。。

若是你要讓上一條命令的結果應用在下一條命令時,你應該使用分號分隔這兩條命令。

經常使用的在目標文件夾中包含全部的c文件命令:shell find 路徑 -maxdepth   -name  "*.c"

判斷目錄是否存在命令:shell if [! -d '/data/']  若是data目錄不存在,則執行。。。

編譯宏以「define」開始,以「endef」結束

 

 gcc經常使用參數:

-o指定輸出文件名

-O優化編譯、連接

-c只編譯不連接

-g增長gdb調試

-w關閉編譯告警

-W打開編譯告警

-fPIC產生與位置無關的代碼(生成動態庫.SO時候用)

-WI,-Bsymbolic 強制動態庫使用本身的符號

 

參考連接:https://blog.csdn.net/weixin_38391755/article/details/80380786

小型可參考的makefile模板:https://www.cnblogs.com/prettyshuang/p/5552328.html

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息