日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Makefile常见符号意思

發布時間:2023/11/30 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Makefile常见符号意思 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? Makefile里有許許多多的符號,對于新手而言如果沒有經常使用,就很容易忘記,所以我把常見符號的意義寫下,方便日后忘記查詢。本文章會持續更新...

?

1.$@:代表目標;$^代表所有依賴,$^代表第一個依賴。

? ? ? ? ?eg:下圖的$@代表目標名test,$^代表所有依賴,即test.c和seqlist.c,所以相當于gcc -O0 -g -Wall -o test test.c seqlist.c。

CC = gcc?? ??? ??? ??? ??? ??? ??? ?#使用gcc編譯器 CFLAGS =-O0 -g -Wall?? ??? ??? ??? ?#-O0代表編譯的時候不進行相應的優化;#-g代表可以使用gdb進行相應的調試,編譯的時候會添加一些調試信息#-Wall把警告信息全都打印出來 test:test.c seqlist.c$(CC) $(CFLAGS) -o $@ $^

2..PHONY:假設我們的makefile所在目錄下,剛好有名為clean的文件,那么我們執行make clean這條規則時并不能執行rm *.o test,如果加上.PHONY:,則可以成功執行rm *.o test.(因為每條規則下的命令被執行必需滿足以下情況之一:1.目標在當前路徑不存在;2.某個依賴比目標“新”,假如我們當前路徑有clean文件,而Makefile里面的clean又沒有依賴文件,所以就會發生錯誤啦!)

test: a.o b.o c.ogcc -o test $^%.o : %.cgcc -c -o $@ $<clean:rm *.o test.PHONY: clean

3.

:= ? # 即時變量,A := xxx ? # A的值即刻確定,在定義時即確定
= ? ?# 延時變量,B = xxx ? ?# B的值使用到時才確定
?= ? # 延時變量, 如果是第1次定義才起效, 如果在前面該變量已定義則忽略這句
+= ? # 附加, 它是即時變量還是延時變量取決于前面的定義

A := $(C) #即時變量,定義時即確定,因為變量C還未賦值,所以A為空 B = $(C) #延時變量,用到時才確定,所以打印B為abc 123 C = abcD = AABBCC D ?= 123456 #在上一行已經定義了變量的,所以根據?=的特性,D打印出來是AABBCCall:@echo A = $(A)@echo B = $(B)@echo D = $(D)C += 123

?

總結

以上是生活随笔為你收集整理的Makefile常见符号意思的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。