LinuxC下Makefile規則執行順序
阿新 • • 發佈:2019-02-10
目前我會用一些簡單的make
.pc的預編譯
.c .cpp的編譯
.o 的連結
個人理解,只有一棵樹,結點後面是執行順序編號
Makefile
由整個make檔案。找到第一個規則以及該規則的第一個目標檔名(root)
然後擴充套件規則,編譯和連結按照先序遍歷執行命令cmd
//********************************************* 規則的語法 //----------英文------------------------------- targets : prerequisites command ... ---------或------------------------------------ targets : prerequisites ; command command ... //targets是檔名,以空格分開,可以使用萬用字元。一個檔案,但也有可能是多個檔案。 //command是命令列,如果其不與“target:prerequisites”在一行,那麼,必須以[Tab鍵]開頭,如果和prerequisites在一行 ,那麼可以用分號';'做為分隔。 //prerequisites也就是目標所依賴的檔案(或依賴目標)。如果其中的某個檔案要比目標檔案要新,那麼,目標就被認為是“ 過時的”,被認為是需要重生成的。 //----------中文------------------------------- <目標檔名> *[" "目標檔名] ":" *[依賴檔名] " "[命令] ... ---------或------------------------------------ <目標檔名> *[" "目標檔名] ":" *[依賴檔名] *[";"命令] " "[命令] " "... //--- ABNF //<> 固定位置必須一個 //[] 存在一個或零個 //*[] 存在零個或若干個 //" " 必須有引號內的字元或字串(英文模式下).eg " "空格分割; ":"冒號分割;... //" " tab鍵頂格開始 //= 右邊替換左邊 //********************************************* 靜態模式(多目標的規則) //----------英文------------------------------- <targets...>: <target-pattern>: <prereq-patterns ...> <commands> ... //----------中文------------------------------- [目標檔名集合 ":" ]<目標檔案匹配模式> ":" *[依賴檔名] *[";"命令] " "[命令] ... //--- ABNF //目標檔名集合=<目標檔名> *[" "目標檔名]