makefile--變量的定義與使用

makefile變量

  • makefile中支持程序設(shè)計(jì)語(yǔ)言中變量的概念
  • makefile中的變量只代表文本數(shù)據(jù)(字符串)
  • makefile中的變量名規(guī)則
    --變量名可以包含字符唉工,數(shù)字研乒,下劃線
    --不能包含“:”、“#”淋硝,“=”或“ ”
    --變量名大小寫(xiě)敏感

變量的定義和使用

變量的定義使用 "name := value"

CC := gcc
TARGET := hello.out

變量的使用"$(name)"

$(TARGET) : func.o main.o
        $(CC) -o $(TARGET) func.o main.o

編程示例1

func.c源文件如下:

void fun()
{
    printf("void fun():hello makefile \n");
}

main.c源文件如下:

extern void fun();

int main()
{
    fun();
 
    return 0;
}

makefile源文件如下:

CC := gcc
TARGET := hello.out

hello.out :main.o func.o
    $(CC) -o $(TARGET) main.o func.o

main.o:main.c
    $(CC) -o main.o -c main.c

func.o:func.c
    $(CC) -o func.o -c func.c

.PHONY:rebuild clean all

rebuild:clean all

all:$(TARGET)

clean:
    rm *.o $(TARGET)

命令行執(zhí)行結(jié)果如下:


image

分析:從執(zhí)行結(jié)果來(lái)看雹熬,調(diào)用$(CC)相當(dāng)于調(diào)用了gcc,調(diào)用$(TARGET)相當(dāng)于調(diào)用了hello.out谣膳。代碼實(shí)現(xiàn)了將gcc和hello.out作為變量的值竿报,在執(zhí)行的時(shí)候調(diào)用變量也就相當(dāng)于調(diào)用了變量的值本身。
引用變量继谚,有助于維護(hù)代碼烈菌,當(dāng)需要改變編譯器和目標(biāo)名稱的時(shí)候,代碼維護(hù)性很強(qiáng)花履,改動(dòng)性很小芽世。參看編程示例2

編程示例2

main.c func.c 文件內(nèi)容均與編程實(shí)驗(yàn)1保持一致,修改makefile中編譯器和目標(biāo)文件的名稱臭挽;makefile代碼如下:

CC := g++
TARGET := hello-world.out

hello.out :main.o func.o
    $(CC) -o $(TARGET) main.o func.o

main.o:main.c
    $(CC) -o main.o -c main.c

func.o:func.c
    $(CC) -o func.o -c func.c

.PHONY:rebuild clean all

rebuild:clean all

all:$(TARGET)

clean:
    rm *.o $(TARGET)

命令行執(zhí)行結(jié)果如下:


image

makefile中變量的4中賦值方式(不同的賦值方式意義不同捂襟!)

  • 簡(jiǎn)單賦值(:=)
  • 遞歸賦值(=)
    --影響的變量可能會(huì)是多個(gè)
  • 條件賦值(?=)
    --適用于第一次定義的變量。
    --如果當(dāng)前要賦值的變量已經(jīng)被定義過(guò)欢峰,則變量值不會(huì)被改變葬荷。
  • 追加賦值(+=)
    --類似于字符串的拼接

簡(jiǎn)單賦值(:=)

  • 程序設(shè)計(jì)語(yǔ)言中的通用的賦值方式
  • 只針對(duì)當(dāng)前語(yǔ)句的變量有效


    image

遞歸賦值(=)

  • 賦值操作可能影響多個(gè)其它變量
  • 所有與目標(biāo)變量相關(guān)的其它變量都將受到影響
    image

條件賦值(?=)

  • 如果變量未定義,使用賦值符號(hào)中的值定義變量
  • 如果變量已經(jīng)定義纽帖,賦值無(wú)效


    image

追加賦值(+=)

  • 原變量值之后加上一個(gè)新值
  • 原變量值與新值之間由空格隔開(kāi)


    image
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末宠漩,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子懊直,更是在濱河造成了極大的恐慌扒吁,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件室囊,死亡現(xiàn)場(chǎng)離奇詭異雕崩,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)融撞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)盼铁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人尝偎,你說(shuō)我怎么就攤上這事饶火∨艨兀” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵肤寝,是天一觀的道長(zhǎng)当辐。 經(jīng)常有香客問(wèn)我,道長(zhǎng)鲤看,這世上最難降的妖魔是什么缘揪? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮刨摩,結(jié)果婚禮上寺晌,老公的妹妹穿的比我還像新娘。我一直安慰自己澡刹,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布耘婚。 她就那樣靜靜地躺著罢浇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪沐祷。 梳的紋絲不亂的頭發(fā)上嚷闭,一...
    開(kāi)封第一講書(shū)人閱讀 49,760評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音赖临,去河邊找鬼胞锰。 笑死,一個(gè)胖子當(dāng)著我的面吹牛兢榨,可吹牛的內(nèi)容都是我干的嗅榕。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼吵聪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼凌那!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起吟逝,我...
    開(kāi)封第一講書(shū)人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤帽蝶,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后块攒,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體励稳,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年囱井,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了驹尼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡琅绅,死狀恐怖扶欣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤料祠,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布骆捧,位于F島的核電站,受9級(jí)特大地震影響髓绽,放射性物質(zhì)發(fā)生泄漏敛苇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一顺呕、第九天 我趴在偏房一處隱蔽的房頂上張望枫攀。 院中可真熱鬧,春花似錦株茶、人聲如沸来涨。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蹦掐。三九已至,卻和暖如春僵闯,著一層夾襖步出監(jiān)牢的瞬間卧抗,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工鳖粟, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留社裆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓向图,卻偏偏與公主長(zhǎng)得像泳秀,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子张漂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容