Makefile常见符号意思
? ? Makefile里有許許多多的符號(hào),對(duì)于新手而言如果沒有經(jīng)常使用,就很容易忘記,所以我把常見符號(hào)的意義寫下,方便日后忘記查詢。本文章會(huì)持續(xù)更新...
?
1.$@:代表目標(biāo);$^代表所有依賴,$^代表第一個(gè)依賴。
? ? ? ? ?eg:下圖的$@代表目標(biāo)名test,$^代表所有依賴,即test.c和seqlist.c,所以相當(dāng)于gcc -O0 -g -Wall -o test test.c seqlist.c。
CC = gcc?? ??? ??? ??? ??? ??? ??? ?#使用gcc編譯器 CFLAGS =-O0 -g -Wall?? ??? ??? ??? ?#-O0代表編譯的時(shí)候不進(jìn)行相應(yīng)的優(yōu)化;#-g代表可以使用gdb進(jìn)行相應(yīng)的調(diào)試,編譯的時(shí)候會(huì)添加一些調(diào)試信息#-Wall把警告信息全都打印出來(lái) test:test.c seqlist.c$(CC) $(CFLAGS) -o $@ $^2..PHONY:假設(shè)我們的makefile所在目錄下,剛好有名為clean的文件,那么我們執(zhí)行make clean這條規(guī)則時(shí)并不能執(zhí)行rm *.o test,如果加上.PHONY:,則可以成功執(zhí)行rm *.o test.(因?yàn)槊織l規(guī)則下的命令被執(zhí)行必需滿足以下情況之一:1.目標(biāo)在當(dāng)前路徑不存在;2.某個(gè)依賴比目標(biāo)“新”,假如我們當(dāng)前路徑有clean文件,而Makefile里面的clean又沒有依賴文件,所以就會(huì)發(fā)生錯(cuò)誤啦!)
test: a.o b.o c.ogcc -o test $^%.o : %.cgcc -c -o $@ $<clean:rm *.o test.PHONY: clean3.
:= ? # 即時(shí)變量,A := xxx ? # A的值即刻確定,在定義時(shí)即確定
= ? ?# 延時(shí)變量,B = xxx ? ?# B的值使用到時(shí)才確定
?= ? # 延時(shí)變量, 如果是第1次定義才起效, 如果在前面該變量已定義則忽略這句
+= ? # 附加, 它是即時(shí)變量還是延時(shí)變量取決于前面的定義
?
總結(jié)
以上是生活随笔為你收集整理的Makefile常见符号意思的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在linux下利用ls命令进行模糊查找
- 下一篇: fstat、stat和lstat 区别