내 makefile에 다음 줄이 있습니다.
var := $(sort $(foreach m,$(libs),$($(m)-objs)))
변경했습니다. 이제 셸에서 정렬을 사용합니다.
var := $(shell echo $(foreach m,$(libs),$($(m)-objs)) | tr ' ' '\n' | sort | tr '\n' ' ' )
그런데 수정하고 나서 보니$(변수)비었다. 내가 뭘 잘못했나요?
편집: 정렬 프로세스에 더 많은 유연성을 갖고 싶기 때문에 gnu-make의 내장 정렬 대신 bash 정렬을 사용하려고 합니다. 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
방해해서 미안해.