我正在尝试找出一些dpkg --print-architecture
在 Makefile 中使用的解决方法。我之前在 gnustep 上的查询没有得到回复,所以我将再次尝试上次失败的解决方法。从我读过的所有内容来看,我会相信以下内容应该有效。但事实并非如此,我怀疑我错过了一些非常基本的东西。似乎TARGETS
从未设置过。有一些与此相关的信息,它们与我所认为的情况不符,但显然是错误的。有人玩过这个吗?
CPU=`dpkg --print-architecture`
amd64_TARGETS = one two
arm64_TARGETS = two
armhf_TARGETS = one
define SET_TARGETS =
TARGETS = $$($(1)_TARGETS)
endef
$(eval $(call SET_TARGETS,$(CPU)))
.PHONY: all
all: $(TARGETS)
echo all $(TARGETS)
one:
echo do one
two:
echo do two
答案1
在一个Makefile
,
CPU=`dpkg --print-architecture`
将变量设置CPU
为文字字符串`dpkg --print-architecture`
,包括反引号。要运行dpkg --print-architecture
并设置CPU
为任何输出,您需要
CPU=$(shell dpkg --print-architecture)
反而。
然后你的Makefile
意志就会按预期工作。
的构造TARGETS
可以简化:
amd64_TARGETS = one two
arm64_TARGETS = two
armhf_TARGETS = one
TARGETS = $($(CPU)_TARGETS)