私の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
邪魔してすみません。