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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

makefile之文件搜索(5)

發布時間:2025/3/15 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 makefile之文件搜索(5) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在一個較大的工程中,一般會將源代碼和二進制文件(.o 文件和可執行文件)安排在不同的目錄來進行區分管理。這種情況下,我們可以使用 make 提供的目錄搜索依賴文件功能(在指定的若干個目錄下自動搜索依賴文件)。在Makefile中,使用依賴文件的目錄搜索功能。當工程的目錄結構發生變化 后,就可以做到不更改 Makefile的規則,只更改依賴文件的搜索目錄。 ?? ?在我們上一節出現的問題當中,我們將.c文件統一放在src目錄下,沒有和Makefile目錄在同一目錄下,因此沒有辦法尋找到.o文件的依賴文件。 make程序有一個特殊的變量VPATH,該變量可以指定依賴文件的搜索路徑,當規則的依賴文件在當前目錄不存在時,make 會在此變量所指定的目錄下去尋找這些依賴文件。通常我們都是用此變量來指定規則的依賴文件的搜索路徑。
?? ?定義變量 “VPATH”時,使用空格或者冒號(:)將多個需要搜索的目錄分開。make搜索目錄的順序是按照變量“VPATH”定義中的目錄順序進行的,當前目錄永遠是第一搜索目錄。例如如下定義

1

VPATH += ./src

?指定了依賴搜索目錄為當前目錄下的src目錄,我們可以在Makefile.rules里面添加給VPATH變量賦值,而在包含該Makefile.rules之前給出當前模塊.c文件所在目錄。
?? ?其實我們也可以直接指定依賴文件的路徑,這樣也是可以的,如下:

1

2

$(SRC_OBJ) : $(OBJDIR)/%.o : $(MOD_SRC_DIR)/%.c???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

>---$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@?

??? 但是這樣在我們更改了工程目錄結構之后,對應的依賴文件沒有在同一目錄下,又變得麻煩了,所以還不如直接給VPATH變量賦值,我們只需要指定源碼所在的目錄即可。
?? ?其實我們還有另外一種搜索文件路徑方法:使用vpath關鍵字(注意不是VPATH變量), 它和VPATH類似,但是它可以為不同類型的文件(由文件名區分)指定不同的搜索目錄。使用方法有三種:
1、vpath PATTERN DIRECTORIES?
為所有符合模式“PATTERN”的文件指定搜索目錄“DIRECTORIES” 。多個目錄使用空格或者冒號(:)分開。?
2、vpath PATTERN?
清除之前為符合模式“PATTERN”的文件設置的搜索路徑。?
3、vpath?
清除所有已被設置的文件搜索路徑。
vapth 使用方法中的“PATTERN”需要包含模式字符“%”;例如上面的定義:

1

VPATH += ./src?

可以寫為:

1

vpath %.c ./src?

?

比如:創建makefile,t/main.c

VPATH = %.c ./t

test:*.o
?? ?gcc -o $@ $^

*.o:main.c *.h
?? ?gcc -c $<

總結

以上是生活随笔為你收集整理的makefile之文件搜索(5)的全部內容,希望文章能夠幫你解決所遇到的問題。

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