我需要从 中提取最后一个之前的单词$(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))
Run Code Online (Sandbox Code Playgroud)
当我运行它时:
word before last is b
make: *** No targets. Stop.
Run Code Online (Sandbox Code Playgroud)
结果是正确的,但是有没有更优雅和理智的方法来实现相同的目标?
$(words ${LIST})如果您在LIST前面添加一个元素,将为您提供最后一个单词的索引。
BEFORE_LAST := $(word $(words ${LIST}),1st ${LIST})
Run Code Online (Sandbox Code Playgroud)
注意1st那里。
我最终使用了GMSL库,这使得事情变得更加连贯:
include gmsl-1.1.6/gmsl
$(lastword $(call chop,$(MAKEFILE_LIST)))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2879 次 |
| 最近记录: |