makefile 中的 shell 操作

makefile 中的 shell 操作

我的 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

很抱歉打扰您。

相关内容