2014-12-02 38 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