一
(一).規則
target:prerequisites.....
(tab)command
(tab) ......
(tab) ......
clean:
(tab)command
注:命令command前面一定要加乙個tab鍵,命令過多可以用反斜槓「\」表示換行。
1.target:目標檔案(可以是目標檔案(object file),可以是可執行檔案(executable file),可以是標籤(lable))
2.prerequisites:生成target所需要的檔案或者目標
3.command:make需要執行的命令,可以是任意的shell命令
makefile核心內容:如果 所需要的檔案或者目標 比 target檔案 新的 或者target不存在的話,command將會被執行。
clean不是乙個檔案,沒有依賴的檔案,所以不會被執行,要執行後面的命令,需要make clean。
(二).例
3:3.o
gcc -o 3 3.o
3.o:3.c 3.h
gcc -c 3.c
clean:
rm 3.o
(三).make工作過程
在當前目錄下需找makefile或makefile|∨
找到第乙個target,作為最終目標|∨
如果target不存在或者後面依賴的檔案要比target新,執行後面的命令生成target|∨
如果target所依賴的檔案也存在,尋找生成依賴檔案的依賴檔案,根據規則生成target所依賴的檔案|∨
如果所有檔案都存在,生成target所依賴的檔案,再生產target,得到最終目標
1.找不到依賴檔案:make直接退出並報錯
2.命令錯誤或編譯不成功:make無反應
3.make只管檔案的依賴性
(四).makefile中使用的變數
宣告乙個變數:objects,objects,objs,objs,obj,obj
例:objects = 3.o
3:objects
gcc -o 3 objects
3.o:3.c 3.h
gcc -c 3.c
clean:
rm objects
objects可以是objects = 1.o 2.o 3.o
(五).讓make自動推導(隱晦規則)
例:objects = 3.o
3:objects
gcc -o 3 objects
3.o:3.c 3.h
-----------把原來的這一行命令刪除,make自動推導出來
clean:
rm objects
(六).另類風格的makefile
把依賴檔案和目標檔案收攏起來
例objects = main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o
edit : $(objects)
cc -o edit $(objects)
main.o : defs.h
kbd.o : defs.h command.h
command.o : defs.h command.h
display.o : defs.h buffer.h
insert.o : defs.h buffer.h
search.o : defs.h buffer.h
files.o : defs.h buffer.h command.h
utils.o : defs.h
.phony : clean
clean :
rm edit $(objects)|∨
objects = main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o
edit : $(objects)
cc -o edit $(objects)
$(objects) : defs.h
kbd.o command.o files.o : command.h
display.o insert.o search.o files.o : buffer.h
.phony : clean
clean :
rm edit $(objects)
(七).清空目標檔案的規則
一般風格:
clean:
rm edit ¥(objects)
更穩健的做法:
.phony:clean
clean:
-rm edit ¥(objects)
來自《跟我一起寫makefile》
機器學習第一課
過擬合就是,通過訓練集進行訓練的時候,模型學習了太多的背景雜訊,讓模型的複雜度高於了真實模型 比如看到齒距型的葉子,就覺得不是葉子 欠擬合是指,模型在訓練集上進行學習的時候,效果就不是很好,沒有充分學習到其中的資訊量,複雜度低於真實模型,得到的模型泛化能力差 比如看到綠色,就覺得是葉子 模型評估指標...
python學習第一課
1.單行注釋 2.或 多行注釋運算子的型別運算子的優先順序運算子tips 參考變數型別 算術運算子 print 1 1 2,加 print 2 1 1,減 print 3 4 12,乘 print 3 4 0.75,除 print 3 4 0,整除 地板除 print 3 4 3,取餘 print ...
學習Appium第一課
腦子不用確實是會生鏽的,三年沒有去學習。我差點忘了自己曾經是計算機專業畢業的,配置個chromedrive花了半天,細思極恐。說說自己入的坑吧。簡單到不能簡單的步驟。2 將該路徑新增到系統環境變數path下 認識到這個問題後重新安裝了32位瀏覽器,沒有重啟 ps 可能出現下圖兩種問題,這是chrom...