Eu tenho a seguinte linha no meu makefile:
var := $(sort $(foreach m,$(libs),$($(m)-objs)))
que eu mudei: agora usa a ordenação do shell:
var := $(shell echo $(foreach m,$(libs),$($(m)-objs)) | tr ' ' '\n' | sort | tr '\n' ' ' )
Mas acontece que depois que minha modificação $ (var) está vazia. O que fiz de errado?
EDITAR: Eu estava tentando substituir o gnu-make builtin sort pelo bash sort, porque queria ter mais flexibilidade sobre o processo de classificação. Descobriu-se que a saída do foreach é estranha. Eu reproduzi o problema com o seguinte 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)
que fornece o resultado esperado:
$ make
aaa hhh lll zzz
aaa hhh lll zzz
Sinto muito por incomodar você.