2014-12-02 63 views
1

在Makefile中,我可以通過$(CURDIR)獲取完整路徑字符串。結果就像/home/jones/prj/platform/Application_UBUNTU/build_os。我如何從字符串中提取UBUNTUMakefile:從完整路徑字符串中提取模式

我用subst替換'/'作爲空格。

DIR = $(subst /, " ", $(CURDIR))

我得到的結果home jones prj platform Application_UBUNTU build_os

然後我嘗試使用過濾器命令,但我不能使用%或通配符匹配Application_UBUNTU。提前感謝您的幫助。

回答

1

使用我的回答here中的penultimateword宏。

penultimateword = $(wordlist $(words $1),$(words $1), x $1) 

BUILD_OS=$(call penultimateword,$(subst /, ,$(CURDIR))) 
BUILD_OS=$(subst _, ,$(BUILD_OS)) 
BUILD_OS=$(word 2,$(BUILD_OS)) 

這對路徑/ etc中額外的下劃線明顯敏感。

+0

這是驚人的,效果很好。但是,我不知道它是如何工作的。如果我想用下劃線'_'提取第二個單詞,在我的示例中,它是'build_os'中的'os',我應該在哪裏修改?謝謝。 – Jones 2014-12-02 04:14:11

+1

我明白了。我可以使用'lastword'宏來獲得'build_os'部分。 'lastword = $(單詞$(單詞$ 1),$ 1)' – Jones 2014-12-02 04:20:22