3 Makefile 變量和變量賦值 變量可以對許多地方使用, 比如目標, 依賴(lài)。 或者命令。 變量的賦值可以使用: “ = ” “ ? = ” “ := ” “ += ” 變量的使用: 通過(guò)$() 來(lái)完成變量的引用。 示例 1: 使用 “: = ” 來(lái)賦值 ![]() 使用“ : =” 給變量賦值, 是立刻賦值, 在執行 var: =aaa 的同時(shí)變量值已經(jīng)被確定了, 所以最后打印為 aaabbb, 而不是 cccbbb, 如下圖所示。 ![]() 示例 2: 使用“=” 賦值 ![]() 使用“=” 來(lái)賦值, 是延遲賦值, 使用它來(lái)賦值是 makefile 里面最后被指定的值。 因為我們最后給變量var1 賦值為 ccc ,所以最后打印為 cccbbb , 而不是 aaabbb , 如下圖所示: ![]() 示例 3: 使用 “? =” 來(lái)賦值 ![]() 使用“?=” 來(lái)賦值, 如果 var1 變量前面沒(méi)有被賦值, 那么就給它賦值為 ccc , 如果前面已經(jīng)賦值了,就適應前面的值, 所以, 打印為 aaabbb ,而不是 cccbbb , 如下圖所示。 ![]() 然后我們注釋掉第一行代碼, makefile 中的注釋為 # ![]() 在運行就會(huì )打印 cccbbb ,因為前面沒(méi)有給 var1 變量賦值。 如下圖所示 ![]() 示例 4 : 使用“+=” 來(lái)賦值 ![]() 使用“+=” 賦值是追加賦值, 是在我們前面定義的好的字符串里面在添加進(jìn)去新的字符串, 所以運行會(huì )打印 aaa bbbccc 。 不過(guò)中間會(huì )有空格, 如下圖所示: ![]() 使用“+=” 也類(lèi)似于我們這樣賦值, 如下圖所示: ![]() 如果賦值很長(cháng), 我們也可以使用換行符“\” , 如下圖所示 ![]() 自動(dòng)化變量就是不用定義且會(huì )隨著(zhù)上下程序的不同而發(fā)生變化的變量叫做自動(dòng)化變量。 這里介紹三個(gè)最常用的自動(dòng)化變量:
在了解這三個(gè)自動(dòng)化變量之前, 我們先來(lái)寫(xiě)一個(gè)程序: main.c代碼如下 ![]() hello.c代碼如下: ![]() hello.h 代碼如下: ![]() Makefile代碼如下: ![]() 使用這個(gè) makefile 雖然也可以成功編譯, 但是, 一旦編譯的文件多了, 如果我們還這樣來(lái)編寫(xiě) makefile就會(huì )變得非常復雜。 所以, 自動(dòng)化變量就派上用場(chǎng)啦。接下來(lái)我們一步一步的來(lái)簡(jiǎn)化這個(gè) makefile 。 簡(jiǎn)化一: 用變量表示依賴(lài)文件 ![]() 后面如果我們在增加依賴(lài)文件的話(huà), 我們直接在變量 var 后面增加就可以了。 簡(jiǎn)化二: 使用通配符 % , 和自動(dòng)化變量 $< 、 $@ 代替依賴(lài)和目標, 簡(jiǎn)化完如下圖所示: ![]() 簡(jiǎn)化三: 使用自動(dòng)化變量 “$^” 表示所有文件依賴(lài)的列表, 簡(jiǎn)化完如下圖所示: ![]() 迅為龍芯2K1000開(kāi)發(fā)板: ![]() ![]() ![]() ![]() 核心板參數: 尺寸:65mm*55mm CPU :龍芯2K1000雙核工業(yè)級處理器 主頻:800MHz-1GHz 內存:板載2GB DDR3 ,可選4GB 存儲:8MB的存儲,用來(lái)放BOOT引導程序的 工作電壓:12V和5V 系統支持:流暢運行vusybx、buiroot、Loognix、QT5.12系統。 引角擴展:引出腳多達232個(gè),1.0間距的郵票孔方式,滿(mǎn)足用戶(hù)各類(lèi)擴展需求 底板參數: 尺寸:190mm*125mm POWER:電直流電源輸入接口 SWITCH:電源開(kāi)關(guān) Ethernet:2 路10M/100M/1000M自適應以太網(wǎng) USB HOST:4路USB2.0 OTG:支持 Mini HDMI:支持 RGB-LCD:支持 Mini PCIE:可外接mini PCIE接口的4G模塊,具備PCIE2.0單通道 4G模塊 :支持 (選配) SIM Card:1個(gè) UART:2路串口 RS485:1路 CAN:2路 蜂鳴器:一個(gè)有源蜂鳴器 RTC:支持 LIO/UART:2mm間距20PIN插座引出 GPIO :2mm間距20PIN插座引出 耳機接口:標準3.5mm耳機接口 JTAG:1路JTAG調試接口(2mm間距10PIN插座引出) GPS:一路GPS (選配) 固態(tài)硬盤(pán)接口:1路 (SATA固態(tài)盤(pán)選配) 按鍵:3個(gè) 溫度傳感器:支持 風(fēng)扇驅動(dòng):支持 |