2013-05-27 28 views
12

我有一個文件名列表:如何從GNU make中的單詞列表中刪除不同的擴展名?

FILES := a.b c.d e.f 

,我想刪除的所有字的擴展名(後綴)來獲得:

a c e 

什麼是做到這一點的最好方法是什麼?

我能想出是「欺騙」與殼牌的最佳:

$(shell for f in $(INS_NODIR); do echo -n "$${f%.*} "; done) 

,但我很驚訝有不僅用make內置功能這樣做的更多的「內置」的方式。

件事我想:

  • patsubst。它似乎只能有一個單一的通配符,其他人正在處理從字面上,我想做類似%.%, %

  • 尋找notsufix功能。

    我感到驚訝的是,這並不存在,因爲dir功能有notdir對口,但suffix功能恰好提取擴展不具備notsuffix對應

回答

21

操作簡單,只需:

NAMES = $(basename $(FILES)) 

請參閱關於Functions for File Names的GNU make手冊部分

+0

tnx ... I已經看到該頁面,瀏覽了所有函數,但我認爲'basename'會和POSIX實用程序一樣(在最後一個'/'之後留下任何內容),以及今天爲基本名稱想到的最常見的定義思想 –