在GNU makefile中的最后一个单词之前获取单词

时间:2014-09-19 12:33:59

标签: makefile

我需要在$(MAKEFILE_LIST)之前提取单词。

到目前为止,我无法想出比这种怪异更好的东西:

LIST := a b c

LAST_WORD_INDEX = $(words $(LIST))
BEFORE_LAST := $(word $(shell echo $(LAST_WORD_INDEX) - 1 | bc),$(LIST))
$(info word before last is $(BEFORE_LAST))

当我运行它时:

word before last is b
make: *** No targets.  Stop.

结果是正确的,但是有更优雅和理智的方法来实现同样的目标吗?

2 个答案:

答案 0 :(得分:2)

我最终使用了GMSL库,这让事情变得更加连贯:

include gmsl-1.1.6/gmsl

$(lastword $(call chop,$(MAKEFILE_LIST)))

答案 1 :(得分:0)

如果在 LIST 前面添加一个元素,则

$(words ${LIST})将为您提供最后一个但单词的索引。

BEFORE_LAST := $(word $(words ${LIST}),$(words ${LIST}),1st ${LIST})

请注意其中的1st