色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【RT-Thread學(xué)習(xí)筆記】Makefile核心基礎(chǔ)知識(shí)

嵌入式物聯(lián)網(wǎng)開(kāi)發(fā) ? 來(lái)源:嵌入式物聯(lián)網(wǎng)開(kāi)發(fā) ? 作者:嵌入式物聯(lián)網(wǎng)開(kāi)發(fā) ? 2022-07-30 13:53 ? 次閱讀

? 筆者常年在Linux環(huán)境編程,經(jīng)常在項(xiàng)目中與Makefile打交道,最近總結(jié)了幾個(gè)Makefile的小的知識(shí)點(diǎn),分享給大家。

通過(guò)閱讀本文,你將了解到以下知識(shí):

  • 1.Makefilke中的.PHONY的作用
  • 2.Makefile中的各種賦值運(yùn)算符號(hào)(= 、:= 、+= 、?=)的區(qū)別

Makefilke中的.PHONY的作用


先給大家一個(gè)簡(jiǎn)單的Makefile,如下:


# This is a Makefile for learning makefile knowledge !!!
# Knowledge point:
# 1. What's the usage of ".PHONY" ?
# 2. What's the diffirences between "=", ":=", "?=", and "+=" ?

TEST_VARIABLE  = "123"
TEST_VARIABLE ?= "456"
TEST_VARIABLE += "789"

all: some_targets
# Simulate to create the lastest target file.
	@touch target_final_file && echo create target_final_file ...
	@echo Make all targets done !!!
	@echo ""
#	@echo "TEST_VARIABLE=$(TEST_VARIABLE)"
	@echo ""
	
TEST_VARIABLE := "abc"

some_targets: 
# Simulate to create some target files.
	@touch target_file1 && echo create target_file1 ...
	@touch target_file2 && echo create target_file2 ...
	@touch target_file3 && echo create target_file3 ...
	@echo ""
#	@echo "TEST_VARIABLE=$(TEST_VARIABLE)"
	@echo ""
	
clean:
	@echo Clean builded project.
	@rm -rf target_file1 target_file2 target_file3 target_final_file

#.PHONY: clean some_targets
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

這個(gè)Makefile很簡(jiǎn)單,Makefile的同級(jí)路徑,輸入make命令,則生成4個(gè)目標(biāo)文件target_file1 target_file2 target_file3 target_final_file;執(zhí)行make clean則刪除這4個(gè)生成的目標(biāo)文件。執(zhí)行效果如下圖所示:

看樣子沒(méi)有任何問(wèn)題,那么如果在Makefile同級(jí)目錄有一個(gè)叫clean的文件呢?我們?cè)囅聲?huì)發(fā)生什么?

從演示的效果看,make clean就報(bào)錯(cuò)了,為啥會(huì) “up to date"呢?還是不是因?yàn)椤癱lean”這個(gè)文件的存在。

原來(lái)Makefile中的TARGET默認(rèn)是個(gè)“文件”,如果不使用.PHONY指定一個(gè)TARGET是非文件的話,當(dāng)有一個(gè)與該TARGET同名的文件存在時(shí),執(zhí)行這個(gè)TARGET的編譯命令就會(huì)報(bào)錯(cuò),如上面的例子,這個(gè)TARGET就是clean。

由此可見(jiàn),.PHONY的作用就是申明一個(gè)TARGET是“偽TARGET”,不用為生成任何文件,自然不用檢查與其同名的文件

我們測(cè)試下,加上.PHONY申明后的結(jié)果:

與我們預(yù)想的一樣,make clean順利執(zhí)行,生成的target文件刪除成功。


Makefile中的各種賦值運(yùn)算符號(hào)的區(qū)別


在Makefile的規(guī)則寫法中,變量的賦值運(yùn)算,有以下幾種方式:

TEST_VARIABLE = "123"
TEST_VARIABLE ?= "456"
TEST_VARIABLE += "789"
TEST_VARIABLE := "abc"

我們先給出結(jié)論:

= 是延緩賦值,語(yǔ)句執(zhí)行時(shí),才會(huì)運(yùn)算賦值,比如VARIABLE = `ls -al` ,只有當(dāng)使用到VARIABLE變量的時(shí)候,才會(huì)去執(zhí)行 ls -al命令求得VARIABLE的值。

?= 是判斷賦值,即當(dāng)變量在此之前沒(méi)有被賦值才會(huì)去執(zhí)行賦值,這個(gè)可以防止變量被多次賦值,或變量被覆蓋的情況。

+= 是疊加賦值,即變量在執(zhí)行+=運(yùn)算后,會(huì)保留之前的值,同時(shí)會(huì)新增新加入的內(nèi)容,這個(gè)常用于對(duì)字符串的處理,可以等同于字符串的追加操作。

:= 是立即賦值,即變量會(huì)被立即執(zhí)行,比如VARIABLE := `ls -al` 在第一個(gè)出現(xiàn)這個(gè)語(yǔ)句的地方,就會(huì)被執(zhí)行l(wèi)s -la,之后都不會(huì)再執(zhí)行了,而是直接使用VARIABLE的值;它與 = 的最大區(qū)別,就是一個(gè)是【立即】,一個(gè)是【延緩】;適用于不同的應(yīng)用場(chǎng)景。

以上就是集中賦值運(yùn)算的對(duì)比和區(qū)別,下面分析下開(kāi)頭給出的Makefile實(shí)踐下。

這個(gè)是因?yàn)門EST_VARIABLE變量最后是用:=賦值的,所有它是最后生效的。其他幾種賦值的效果,留給讀者去驗(yàn)證下吧。

如有疑問(wèn),歡迎在評(píng)論席指出。@_@


延伸閱讀:

【Linux + Makefile】簡(jiǎn)單實(shí)用的Makefile模板來(lái)了

【Linux + Makefile】Makefile的高階用法:解決C文件包含的頭文件修改了,但C文件不重新編譯的問(wèn)題

【Linux + Makefile】十分鐘教你學(xué)會(huì)Makefile的FORCE

?審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11292

    瀏覽量

    209331
  • Makefile
    +關(guān)注

    關(guān)注

    1

    文章

    125

    瀏覽量

    19181
  • RT-Thread
    +關(guān)注

    關(guān)注

    31

    文章

    1285

    瀏覽量

    40085
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    RT-Thread學(xué)習(xí)筆記】使用scons命令生成靜態(tài)庫(kù)

    RT-Thread學(xué)習(xí)筆記】如何使用scons 命令中buildlib的生成靜態(tài)庫(kù)?
    的頭像 發(fā)表于 07-27 09:13 ?5961次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】使用scons命令生成靜態(tài)庫(kù)

    RT-Thread學(xué)習(xí)筆記】80x86匯編基礎(chǔ)的三大塊知識(shí)

    RT-Thread學(xué)習(xí)筆記】80x86匯編基礎(chǔ)的三大塊知識(shí)
    的頭像 發(fā)表于 07-30 10:57 ?1977次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】80x86匯編基礎(chǔ)的三大塊<b class='flag-5'>知識(shí)</b>

    RT-Thread學(xué)習(xí)筆記】ARM匯編基礎(chǔ)的三大塊知識(shí)

    RT-Thread學(xué)習(xí)筆記】ARM匯編基礎(chǔ)的三大塊知識(shí)
    的頭像 發(fā)表于 07-30 10:59 ?1927次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】ARM匯編基礎(chǔ)的三大塊<b class='flag-5'>知識(shí)</b>

    RT-Thread學(xué)習(xí)筆記】RISC-V匯編基礎(chǔ)三大塊知識(shí)

    RT-Thread學(xué)習(xí)筆記】RISC-V匯編基礎(chǔ)的三大塊知識(shí)
    的頭像 發(fā)表于 07-30 11:01 ?2752次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】RISC-V匯編基礎(chǔ)三大塊<b class='flag-5'>知識(shí)</b>

    RT-Thread Nano入門學(xué)習(xí)筆記

    RT-Thread Nano入門學(xué)習(xí)筆記
    發(fā)表于 11-26 12:36 ?20次下載
    <b class='flag-5'>RT-Thread</b> Nano入門<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 理解defunct僵尸線程

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對(duì)象rt_objectRT-Thread 內(nèi)核學(xué)習(xí)筆記
    發(fā)表于 01-25 18:19 ?8次下載
    <b class='flag-5'>RT-Thread</b> 內(nèi)核<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b> - 理解defunct僵尸線程

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 設(shè)備模型rt_device的理解

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對(duì)象rt_objectRT-Thread 內(nèi)核學(xué)習(xí)筆記
    發(fā)表于 01-25 18:19 ?8次下載
    <b class='flag-5'>RT-Thread</b> 內(nèi)核<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b> - 設(shè)備模型<b class='flag-5'>rt</b>_device的理解

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對(duì)象鏈表結(jié)構(gòu)深入理解

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對(duì)象rt_objectRT-Thread 內(nèi)核學(xué)習(xí)筆記
    發(fā)表于 01-25 18:23 ?6次下載
    <b class='flag-5'>RT-Thread</b> 內(nèi)核<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b> - 內(nèi)核對(duì)象鏈表結(jié)構(gòu)深入理解

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對(duì)象初始化鏈表組織方式

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對(duì)象rt_objectRT-Thread 內(nèi)核學(xué)習(xí)筆記
    發(fā)表于 01-25 18:24 ?3次下載
    <b class='flag-5'>RT-Thread</b> 內(nèi)核<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b> - 內(nèi)核對(duì)象初始化鏈表組織方式

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對(duì)象操作API

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對(duì)象rt_objectRT-Thread 內(nèi)核學(xué)習(xí)筆記
    發(fā)表于 01-25 18:26 ?7次下載
    <b class='flag-5'>RT-Thread</b> 內(nèi)核<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b> - 內(nèi)核對(duì)象操作API

    RT-Thread學(xué)習(xí)筆記 RT-Thread的架構(gòu)概述

    的種種優(yōu)越之處。RT-Thread 是一款完全由國(guó)內(nèi)團(tuán)隊(duì)開(kāi)發(fā)維護(hù)的嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS),具有完全的自主知識(shí)產(chǎn)權(quán)。經(jīng)過(guò) 16 個(gè)年頭的沉淀,伴隨著物聯(lián)網(wǎng)的興起,它正演變成一個(gè)功能強(qiáng)大、組件豐富的物
    的頭像 發(fā)表于 07-09 11:27 ?4546次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b> <b class='flag-5'>RT-Thread</b>的架構(gòu)概述

    RT-Thread學(xué)習(xí)筆記Makefile的FORCE

    RT-Thread學(xué)習(xí)筆記】十分鐘學(xué)會(huì)Makefile的FORCE
    的頭像 發(fā)表于 07-30 13:55 ?2547次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】<b class='flag-5'>Makefile</b>的FORCE

    RT-Thread學(xué)習(xí)筆記】如何抓取終端的網(wǎng)絡(luò)報(bào)文

    RT-Thread學(xué)習(xí)筆記】如何抓取終端的網(wǎng)絡(luò)報(bào)文?
    的頭像 發(fā)表于 07-30 13:57 ?2810次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】如何抓取終端的網(wǎng)絡(luò)報(bào)文

    RT-Thread學(xué)習(xí)筆記】用memwatch排除內(nèi)存泄露

    RT-Thread學(xué)習(xí)筆記】使用memwatch排除內(nèi)存泄露
    的頭像 發(fā)表于 07-30 14:01 ?2326次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】用memwatch排除內(nèi)存泄露

    基于RT-Thread Studio學(xué)習(xí)

    前期準(zhǔn)備:從官網(wǎng)下載 RT-Thread Studio,弄個(gè)賬號(hào)登陸,開(kāi)啟rt-thread學(xué)習(xí)之旅。
    的頭像 發(fā)表于 05-15 11:00 ?3932次閱讀
    基于<b class='flag-5'>RT-Thread</b> Studio<b class='flag-5'>學(xué)習(xí)</b>
    主站蜘蛛池模板: 伊人亚洲AV久久无码精品| 饥渴的护士自慰被发现| 任你躁国语自产二区在线播放| 最近中文字幕无吗免费高清| 久久久无码精品一区二区三区| 亚洲色欲啪啪久久WWW综合网| 韩国精品无码少妇在线观看网站 | 真实国产精品视频国产网| 久久草这在线观看免费| 伊人亚洲AV久久无码精品| 脔到她哭H粗话HWWW男男动漫| 799是什么意思网络用语| 免费看男人J放进女人J无遮掩| 97久久国产露脸精品国产| 女教师公车痴汉在线播放 | 久久精品无码一区二区日韩av| 在线播放免费人成毛片视频| 久久只有这里有精品4| 97超视频在线观看| 欧美整片华人play| 丰满的女朋友 在线播放| 无人区国产片| 狠狠色狠狠色狠狠五月ady| 孕妇bbwbbwbbwbbw超清| 免费在线亚洲视频| 成人麻豆日韩在无码视频| 四虎永久精品视频在线| 国内精品久久影视免费| 诱受H嗯啊巨肉舍友1V1| 女朋友的妈妈在线观看| 成人性生交大片免费看4| 王晶三级作品| 黄页网址大全免费观看| 3D动漫网站HOXXXxes| 人人听力网mp3下载| 国产精品久久欧美一区| 精品伊人久久| 中国老妇xxxhd| 秋霞伦理手机在线看片| 国产精品资源在线观看网站| 亚洲中文在线偷拍|