나는 make 파일에 정의 된 목록을 가지고 있으며 사용자는이 목록에서 찾을 필요가있는 환경 변수를 설정해야합니다. gnu를 사용하여이 작업을 수행하는 방법이 있습니까? make가 어떤 타겟을 만들기 시작하기 전에, 어떤 레시피가 아니더라도 이것을하고 싶습니다. 사용자가 환경을 설정하는지 확인하는 것은 품질 보증 검사입니다. 변수를 범위/목록 내의 값으로 변경하십시오. 터미널에GNU-make는 목록/배열에 요소가 있는지 확인합니다.
:
setenv ENV_PARAM x
메이크에서 : 매드 사이언티스트의 응답 작품 @
PARAMS := a b c
if ${ENV_PARAM} exists in $(PARAMS)
true
else
false
endif
. 여러 매개 변수를 테스트하기 위해 foreach 루프를 사용하여 if 블록을 래핑하는 방법이 있습니까?
KEYS := PARAMS FACTORS
PARAMS := a b c
FACTORS := x y z
foreach v in ($(KEYS)) {
ifneq ($(filter $(ENV_$(v)),$(v)),)
$(info $(ENV_$(v)) exists in $(v))
else
$(info $(ENV_$(v)) does not exist in $(v))
endif
}
당신이주는 예제는 충분히 명확하지 않습니다. 그러한 테스트가 사용될 수있는 두 가지 다른 장소가 있습니다. 타겟을 만들기 위해 레시피에서 테스트를하고 싶거나 make가 레시피 밖에서 테스트를하고 싶을 수도 있습니다. 이 두 구문에 대한 구문은 매우 다르기 때문에 수행하려는 대상에 대한 자세한 정보를 제공해야합니다. – MadScientist
방금 내 질문을 편집했습니다. – Wilderness