gpt4 book ai didi

linux - gnu makefile 变量的值,但前提是它尚未包含它

转载 作者:太空宇宙 更新时间:2023-11-04 10:03:38 26 4
gpt4 key购买 nike

因此,基于某些标准,我想附加到一个变量,比方说:

LIST += BOB

但是我想添加 BOB 的地方可能不止一个,所以让我们看下面的代码片段:

LIST += BOB
LIST += FRED
LIST += TED
LIST += BOB

我想以包含 BOB FRED TED 的 LIST 结束,所以我不想要重复的额外 BOB。我也想保持顺序(否则我想我可以使用 sort)。

有没有聪明的方法来做到这一点? - 我想我可以先在变量中搜索文本,但它看起来很啰嗦。那么有没有“append if not already existing”类型的函数呢?

最佳答案

如果 LIST 被简单地扩展 (LIST :=) 你可以只是 LIST += $(filter-out $(LIST),BOB):

$ cat Makefile
LIST :=
LIST += $(filter-out $(LIST),BOB)
LIST += $(filter-out $(LIST),FRED)
LIST += $(filter-out $(LIST),TED)
LIST += $(filter-out $(LIST),BOB)

all:
$(info $(LIST))
$ make
BOB FRED TED
make: 'all' is up to date.

注意:如果一个变量被声明为简单的扩展它会保持不变,除非你改变它,例如使用 LIST = ...

关于linux - gnu makefile 变量的值,但前提是它尚未包含它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54184008/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com