저는 다음과 같은 것을 달성하려고 합니다. 사용자가 실행될 경우 make build_x version=1.0
표시하고 Building version 1.0
, 그렇지 않으면 ( 매개변수 make build_x
없이 version
) 표시합니다 Building version latest
. 하지만 여기서 핵심은 무엇입니까? 버전을 기본값으로 설정해야 합니다 -
(올바르게 사용하려면 git
). 그래서 으로 version_info
대체된 추가 변수를 사용했습니다 .-
latest
그래서 내 코드는 다음과 같습니다
build_x:
$(eval version ?= -)
$(eval version_info = ${if ["${version}" == "-"], "latest", "${version}"})
${INFO} "Doing checkout according to version $(version_info)..."
주어진 조건에 문제가 있을 수 있다는 것을 알고 있습니다 if
.
어떤 아이디어가 있나요?
답변1
이것은 나에게 효과적입니다.
version ?= -
ifeq (-,$(version))
version_info = latest
else
version_info = $(version)
endif
build_x:
@echo version_info = $(version_info)
설정되지 않은 경우 version
로 설정 -
되고 적절하게 채워집니다 version_info
.
대상별 변수 및 한 줄 변형을 사용합니다.
build_x: version ?= -
build_x: version_info = $(if $(version:-=),$(version),latest)
build_x:
@echo version_info = $(version_info)
다음과 같이 작동합니다(전체 참조).GNU 문서 만들기):
version ?= -
세트version
-
아직 설정하지 않은 경우if
첫 번째 매개변수를 확인하세요., 비어 있는지 평가하고 첫 번째 인수가 비어 있지 않으면 두 번째 인수로 바꾸고, 비어 있으면 세 번째 인수로 바꿉니다.$(version:-=)
평가하다version
,바꾸다-
빈 문자열 사용(:
교체 도입, 검색 키는 이전 텍스트=
이고 대체는 다음 텍스트임=
)
답변2
여기에서 대상별 변수 값 기능을 최대한 활용할 수 있습니다.
build_x: version := latest
build_x:
@echo "Building version $(version)"