규칙을 평가하기 전에 특정 조건을 강제로 적용 할 수 있습니까?규칙 이전의 Makefile 필수 구성 요소
예 :
FOOPATH = $(shell which foo)
ifndef $(FOOPATH)
echo "Error: foo is not avaliable."
# abort make
endif
PS : 나는 전제 조건을 추가 할 수있는 솔루션을 찾는 게 아니에요
규칙을 평가하기 전에 특정 조건을 강제로 적용 할 수 있습니까?규칙 이전의 Makefile 필수 구성 요소
예 :
FOOPATH = $(shell which foo)
ifndef $(FOOPATH)
echo "Error: foo is not avaliable."
# abort make
endif
PS : 나는 전제 조건을 추가 할 수있는 솔루션을 찾는 게 아니에요
FOOPATH (전체 메이크 푸에 의존해야하기 때문에) foo는에 따라 모든 규칙을 = $ (foo는 쉘)
ifeq ($(FOOPATH),)
$(error foo is not available)
endif
(가 비어있는 경우에도
FOOPATH
가 정의되어 있습니다.)
EDIT : 수정 - 나는 틀렸어. ifndef
; 변수가 정의되었지만 값이 비어 있으면 true
을 반환합니다. 때문에 FOOPATH
에 값이 할당되는 방식의 기록으로 그러나은 작동하지 않습니다 :
FOOPATH = $(shell which foo)
FOOPATH
의 값은 문자 그대로 "$ (foo는 쉘)"입니다, 그래서 ifndef
은 참으로 평가하지 않습니다 오류가 표시되지 않습니다. 변수 이름 아니라 그 값 (예컨대 FOOPATH
하지 $(FOOPATH)
)으로
FOOPATH := $(shell which foo) # <-- note the colon
, ifndef
적용한다 : 용액은 simply expanded variable를 사용하는 것이다. //www.chemie.fu-berlin : 자세한 내용은
ifndef FOOPATH
$(error foo is not available)
endif
,이 많은, [페이지] (HTTP에 따라 @Beta
FOOPATH = $(shell which ls 2>/dev/null)
ifeq ($(FOOPATH),)
$(error foo is not avaliable)
else
$(warning foo is avaliable in $(FOOPATH))
endif
all:
@echo "rule all executed"
에서 도움 내 최종 솔루션입니다. de/chemnet/use/info/make/make_7.html) var가 "비어 있지 않은 값을 가졌을 때"'ifdef' evaluateetes가 – RSFalcon7
@ RSFalcon7 : 절대적으로 옳습니다. 수정 중 ... – Beta
당신은'ifndef'에 대해 옳았 습니다만,'$ (FOOPATH)'의 값은'$ (shell which foo)'의 결과입니다, 나는 – RSFalcon7