我的 makefile 中有以下行:
var := $(sort $(foreach m,$(libs),$($(m)-objs)))
我改变了:它现在使用 shell 中的排序:
var := $(shell echo $(foreach m,$(libs),$($(m)-objs)) | tr ' ' '\n' | sort | tr '\n' ' ' )
但我修改后发现$(变量)是空的。我做错了什么?
编辑:我试图用 bash 排序替代 gnu-make 内置排序,因为我想在排序过程中拥有更大的灵活性。结果发现 foreach 的输出很奇怪。我使用以下 makefile 重现了该问题:
a-obj := hhh lll
b-obj := zzz aaa
x := a b
xx := $(shell echo $(foreach m,$(x),$($(m)-obj)) | tr ' ' '\n' | sort)
yy := $(sort $(foreach m,$(x),$($(m)-obj)))
all:
@echo $(xx)
@echo $(yy)
这给出了预期的输出:
$ make
aaa hhh lll zzz
aaa hhh lll zzz
很抱歉打扰您。