3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
在操作UNIX系統時,常常會用到make指令來自動build服務,make會去執行該目錄裡的Makefile,按照裡面的設定完成許多事情 例如FreeBSD利用port-tree安裝軟體時就是用make 不過Linux和FreeBSD的Makefile又有些不同 FreeBSD的make版本是Berkeley make Linux則是GNU make 所以在寫Makefile時需要注意一下OS FreeBSD版本Makefile 1.Makefile Layout 在command line中,輸入make指令預設是執行該目錄的Makefile,但也可以透過 -f 參數指向其他檔案 make -f 2.Target 語法 在使用make時,通常都會加上例如install、config、clean等的target語法 all: @echo 123; deploy: @echo 456; help: all 當直接下make時,會執行all以下的語法,輸出123 若是make deploy則會輸出456 因為echo那段是Shell語法,如果要把那段語法當成Shell執行,都需要在前面加上Tab縮排,不然會錯誤 另外輸入make help時,會執行all區塊的語法 3.特別字元 @:不要顯示執行的指令。 -:表示即使該行指令出錯,也不會中斷執行。 all: -rm test;echo 123; 4.變數 在慣例上,Makefile內部使用的變數名稱使用小寫;而使用者從命令列自行指定數值的變數,則是使用大寫 在Makefile中,可利用 (name) 或 {name} 來存取已定義的變數 #command Line:make KERNEL=FreeBSD kernel = Linux all: @echo {KERNEL} @echo {kernel} 5.=語法 ?=:若變數未定義,則替它指定新的值。否則,採用原有的值 x = 123 x ?= foo all: @echo $(x) #輸出 123 +=:字串串接(會自動以空白隔開) !=:將shell語法結果傳回變數裡 #顯示OS資訊 x != uname -a; all: @echo $(x) 6.條件判斷式(.if,.elif,.else)及相關函式 x = 123 all: .if (x) > 123 echo "big" .elif (x) == 123 echo "equal" .else echo "small" .endif 注意:條件判斷式為Makefile裡的語法,並不是shell語法,所以不需要用Tab鍵縮排 empty:判斷Makefile變數是否為空值 #empty裡面傳入變數名稱VAR而不是$(VAR) all: .if empty(x) echo "yes" .endif defined:判斷Makefile變數是否被定義 #defined裡面傳入變數名稱VAR而不是$(VAR) all: .if defined(x) echo "yes" .endif 也可以寫成 #.ifdef 等同 .if defined() #.ifndef 等同 .if !defined() #.elifdef 等同 .elif defined() #.elifndef 等同 .elif !defined() all: .ifdef x echo "yes" .else echo "no" .endif exists:判斷是否有該檔案或目錄 path = /home/johnson4932/code/test all: .if exists($(path)) echo "yes" .else echo "no" .endif 7.include Otherfile: all: @echo 123; Makefile .include "Otherfile" Categories: FreeBSDUnix 分類 Android AngularJS Chrome Database MySQL DataStructure Editor Vim Firefox Git Hadoop Language Go Java JavaScript jQuery jQueryChart Node.js Vue PHP Laravel ZendFramework Python Mac Network Cisco DLink Juniper Oauth Server Apache Share Unix FreeBSD Linux WebDesign Bootstrap CSS HTML Wordpress Search 搜尋:

本文由blogjohnsonluorg提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦