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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

make *** 没有指明目标并且找不到 makefile。 停止。_Makefile目标文件搜索(VPATH和vpath)...

發布時間:2025/3/12 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 make *** 没有指明目标并且找不到 makefile。 停止。_Makefile目标文件搜索(VPATH和vpath)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們都知道一個工程文件中的源文件有很多,并且存放的位置可能不相同(工程中的文件會被放到不同的目錄下),所以按照之前的方式去編寫 Makefile 會有問題。我們之前列舉的例子,所有的源文件基本上都是存放在與 Makefile 相同的目錄下。只要依賴的文件存在,并且依賴規則沒有問題,執行 make命令整個工程就會按照對我們編寫規則去編譯,最終會重建目標文件。那如果需要的文件是存在于不同的路徑下,在編譯的時候要去怎么辦呢(不改變工程的結構)?這就用到了 Makefile 中為我們提供的目錄搜索文件的功能。常見的搜索的方法的主要有兩種:一般搜索VPATH和選擇搜索vpath。乍一看只是大小寫的區別,其實兩者在本質上也是不同的。VPATH 和 vpath 的區別:VPATH 是變量,更具體的說是環境變量,Makefile 中的一種特殊變量,使用時需要指定文件的路徑;vpath 是關鍵字,按照模式搜索,也可以說成是選擇搜索。搜索的時候不僅需要加上文件的路徑,還需要加上相應限制的條件。

?VPATH的使用

在 Makefile 中可以這樣寫:

VPATH := src

我們可以這樣理解,把 src 的值賦值給變量 VPATH,所以在執行 make 的時候會從 src 目錄下找我們需要的文件。當存在多個路徑的時候我們可以這樣寫:

VPATH := src car

或者是

VPATH := src:car

多個路徑之間要使用空格或者是冒號隔開,表示在多個路徑下搜索文件。搜索的順序為我們書寫時的順序,拿上面的例子來說,我們應該先搜索 src 目錄下的文件,再搜索 car 目錄下的文件。

注意:無論你定義了多少路徑,make 執行的時候會先搜索當前路徑下的文件,當前目錄下沒有我們要找的文件,才去 VPATH 的路徑中去尋找。如果當前目錄下有我們要使用的文件,那么 make 就會使用我們當前目錄下的文件。

實例:

VPATH=src car

test:test.o

gcc -o $@ $^

假設 test.c 文件沒有在當前的目錄而在當前文件的子目錄 "src" 或者是 "car" 下,程序執行是沒有問題的,但是生成的 test 的文件沒有在定義的子目錄文件中而是在當前的目錄下,當然生成文件路徑可以指定。

vpath的使用

學習了 VPATH的使用,我們再來了解一下關鍵字搜索 vpath 的使用,這種搜索方式一般被稱作選擇性搜索。使用上的區別我們可以這樣理解:VPATH 是搜索路徑下所有的文件,而 vpath 更像是添加了限制條件,會過濾出一部分再去尋找。?具體用法:

1) vpath PATTERN DIRECTORIES?
2) vpath PATTERN
3) vpath

( PATTERN:可以理解為要尋找的條件,DIRECTORIES:尋找的路徑 )首先是用法一,命令格式如下:

vpath test.c src

可以這樣理解,在 src 路徑下搜索文件 test.c。多路徑的書寫規則如下:

vpath test.c src car? ? ? ? ?或者是? ? ? ? ?vpath test.c src : car

多路徑的用法其實和 VPATH 差不多,都是使用空格或者是冒號分隔開,搜索路徑的順序是先 src 目錄,然后是 car 目錄。其次是用法二,命令格式如下:

vpath test.c

用法二的意思是清除符合文件 test.c 的搜索目錄。最后是用法三,命令格式如下:

vpath

vpath 單獨使的意思是清除所有已被設置的文件搜索路徑。另外在使用 vpath 的時候,搜索的條件中可以包含模式字符“%”,這個符號的作用是匹配一個或者是多個字符,例如“%.c”表示搜索路徑下所有的 .c 結尾的文件。如果搜索條件中沒有包含“%" ,那么搜索的文件就是具體的文件名稱。?使用什么樣的搜索方法,主要是基于編譯器的執行效率。使用 VPATH 的情況是前路徑下的文件較少,或者是搜索的文件不能使用通配符表示,這些情況下使用VPATH最好。如果存在某個路徑的文件特別的多或者是可以使用通配符表示的時候,就不建議使用 VPATH 這種方法,為什么呢?因為 VPATH 在去搜索文件的時沒有限制條件,所以它回去檢索這個目錄下的所有文件,每一個文件都會進行對比,搜索和我們目錄名相同的文件,不僅速度會很慢,而且效率會很低。我們在這種情況下就可以使用 vpath 搜索,它包含搜索條件的限制,搜索的時候只會從我們規定的條件中搜索目標,過濾掉不符合條件的文件,當然查找的時候也會比較的快。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的make *** 没有指明目标并且找不到 makefile。 停止。_Makefile目标文件搜索(VPATH和vpath)...的全部內容,希望文章能夠幫你解決所遇到的問題。

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