반응형
ENV 변수 또는 기본값을 사용하여 Makefile 변수 정의
나는 간단한 일을하려고합니다.
TMPDIR ?= /tmp
test:
@echo $(TMPDIR)
다음을 실행하면 작동합니다.
$ make test
/tmp
내가 실행하는 경우에도 작동합니다.
$ make test -e TMPDIR=~/tmp
/home/user/tmp
다음과 같은 경우에도 작동하도록 할 수 있습니다.
$ TMPDIR=~/tmp make test
/home/user/tmp
위의 의견에 대한 후속 조치는 다음과 같습니다.
T ?= foo
all:
: '$(T)'
이제 Makefile을 다양한 방법으로 실행하면 예상대로 작동 합니다 (명령 줄이나 환경에서 foo
설정하지 않은 경우에만 나타납니다 T
).
$ make
: 'foo'
$ make T=bar
: 'bar'
$ T=bar make
: 'bar'
make 명령 줄에 지정된 변수는 makefile에 지정된 값을 재정의합니다 .
TMPDIR := "/tmp"
test:
@echo $(TMPDIR)
그리고:
make TMPDIR=whatever
whatever
일반적으로 makefile이 환경 변수에 의존하는 것은 좋지 않습니다. 이것이 make 명령 줄에서 변수를 전달하는 것이 선호되는 이유입니다.
또 다른 방법은 make or
함수 를 사용하는 것입니다.
X := $(or ${X},${X},abc)
all :
@echo ${X}
make
abc
X=def make
def
사실, ?=
할당 을 사용하는 것만을 고수해야 합니다.
다음은 간단한 해결책입니다.
SHELL := env TMPDIR=$(TMPDIR) $(SHELL)
TMPDIR ?= "/tmp"
all:
@echo $(TMPDIR)
which works for both scenarios: TMPDIR=new/path make
and make TMPDIR=new/path
.
One of the thing you could do is:
TMPDIR := "/tmp"
ifdef $$TMPDIR
TMPDIR := $$TMPDIR
endif
test:
echo $(TMPDIR)
ReferenceURL : https://stackoverflow.com/questions/24263291/define-a-makefile-variable-using-a-env-variable-or-a-default-value
반응형
'programing' 카테고리의 다른 글
JavaScript없이 HTML 콘텐츠가 포함 된 도구 설명 (0) | 2021.01.14 |
---|---|
자바 스크립트 디자인 패턴 : 모듈 패턴과 공개 모듈 패턴의 차이점? (0) | 2021.01.14 |
Android : 연결 풀이 닫 혔기 때문에이 작업을 수행 할 수 없습니다. (0) | 2021.01.14 |
잘못된 장치 상태-Xcode / iOS 시뮬레이터 오류 (0) | 2021.01.14 |
Angular 8-지연로드 모듈 : 오류 TS1323 : '--module'플래그가 'commonjs'또는 'esNext'인 경우에만 동적 가져 오기가 지원됩니다. (0) | 2021.01.14 |