dpkg --print-architecture를 사용하여 makefile의 빌드를 제어하세요.

dpkg --print-architecture를 사용하여 makefile의 빌드를 제어하세요.

dpkg --print-architectureMakefile에서 사용할 수 있는 몇 가지 해결 방법을 찾으려고 노력 중입니다 . 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)

관련 정보