gnu make項目管理(2)規則

具體規則

以特定的文件作爲工作目標和必要條件,比如:
在這裏插入圖片描述

自動變量

在這裏插入圖片描述

VPATH和vpath來指定查找目錄

VPATH和vpath是環境變量,可以來告訴make c、h文件到哪裏找,
有如下目錄結構和test.c
在這裏插入圖片描述
在這裏插入圖片描述

#=====makefile
VPATH = src inc #告訴make c h文件到哪裏找 
INC = -Iinc     #告訴gcc h文件到哪裏找
test:add.o sub.o test.o 
	gcc $^ -o $@ $(INC)

test.o:test.c 
	gcc -c $< -o $@  $(INC)

add.o:add.c add.h
	gcc -c $< -o $@ $(INC)
sub.o:sub.c sub.h
	gcc -c $< -o $@ $(INC)
	
.PHONY:clean
clean:
	rm -f test.o add.o sub.o test

執行make得到如下結果
在這裏插入圖片描述
對於VPATH,如果多個目錄出現同名文件則make只會找到VPATH中首先出現的目錄,所以可以用vpath來更細化處理文件路徑查找

vpath %.c src #c文件到src查找
vpath %.h inc #h文件到inc查找
模式規則

用文件名模式的匹配來簡化規則的建立,以及提供內置規則來處理他們,主文件名可以用%字符代替,所以上面的makefile可以寫作下面的樣子

#VPATH = src inc #告訴make c h文件到哪裏找 
vpath %.c src
vpath %.h inc
INC = -Iinc     #告訴gcc h文件到哪裏找
test:add.o sub.o test.c 
	gcc $^ -o $@ $(INC)

%.o:%.c %.h
	gcc -c $< -o $@ $(INC)

.PHONY:clean
clean:
	rm -f *.o test
管理程序庫
  • 創建程序庫
    在這裏插入圖片描述
    參數
    r表示想以指定的目標文件替換程序庫裏的成員
    v表示告訴我們執行了那些動作
    t顯示歸檔文件的內容
    x從歸檔文件中解壓文件,利用選項-o可以指定解壓的文件,如ar -x libaddsub.a -o add.o

顯示信息
a表示目標文件已被添加到程序庫中
r表示目標文件已被替換到程序庫中

  • 程序庫的使用
    方法1,帶上路徑使用全稱
    在這裏插入圖片描述
    方法2,去掉前綴後綴加上-l選項,用-L指定路徑
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章