搜索目標/依賴文件
正常情况下,虽然目標/依賴文件名中不含有路徑,其實這種文件名的路徑部分是空值,代表的是當前目錄(./)。如果我们要在文件名中给出路徑,則有兩種方法:
1、絕對路徑,必須以‘/’開頭;
2、相對路徑,非‘/’開頭的所有路徑。
變量VPATH
變量VPATH定義了一组搜索路徑。如果一個文件在文件名给出的路徑中不存在,就在(VPATH+文件名中的路徑)的路徑中搜索該文件。
在VPATH定義中,路徑的名字由冒號或空格分開。
命令vpath
vpath pattern directories
vpath允許對符合某一格式的文件名指定一个搜尋路徑,路徑由冒號或空格隔開。pattern是一個包含‘%’的字符串,例如:
vpath%.h $(INCDIR)
如果有多個vpath和一个文件名匹配,則make按次序搜索這些vpath指定的路徑。
vpath pattern
清除和該格式相關聯的搜尋路径徑。
vpath
清除前面所有由vpath指定的搜尋路徑。
變量GPATH
1. 如果目標文件是根據文件名搜索得到的,此時$@代表文件名。
2. 如果目標文件是通過搜索其它路徑得到的,此時@代表文件名。但是如果搜索路徑出
現在變量GPATH中,@將代表(搜索路徑+文件名)。
3. 如果目標文件没有被搜索到,意味着需要執行規則命令来創建該目標文件,此時$@代表文件名。
4. 如果依賴文件是根據文件名搜索得到的,而且該依賴文件不需要被更新,此時$<代表文件名。
5. 如果依賴文件是通過搜索其它路徑得到的,而且該依賴文件不需要被更新,此時$<代表(搜索路徑+文件名)。
6. 如果依賴文件没有被搜索到或是需要被更新,此时<代表的是當它作為目標文件被創
建或更新的規則命令中的<代表的是當它作為目標文件被創建或更新的規則命令中的@。