使用 dpkg --print-architecture 控制 makefile 中的构建

使用 dpkg --print-architecture 控制 makefile 中的构建

我正在尝试找出一些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)

相关内容