변수가 설정되지 않았거나 설정되었지만 null 값이 있는 경우 기본값을 가져야 하는 변수가 있는 Makefile이 있습니다.
이 목표를 어떻게 달성할 수 있나요?
쉘 스크립트 내에서 make를 호출하고 makefile에 필요한 값을 쉘에서 $1로 전달할 수 있기 때문에 이것이 필요합니다. 이를 makefile에 전달하려면 bash 스크립트에서 설정해야 합니다.
아이디어: (우아하지 않음) bash 스크립트 내에서 변수가 설정되어 있지만 null 값이 있는지 확인할 수 있으며, 이 경우 설정을 해제할 수 있습니다.
파편
참고: 변수가 터미널에 정의되어 있지 않으면 bash 스크립트에 설정되어 있으므로 다음이 작동하지 않습니다.
파일 생성
dSourceP?=$(shell pwd)
Source?=$(notdir $(wildcard $(dSourceP)/*.md))
배쉬 스크립트
make all dSourceP="${1}" Source="${2}"
단말기
bash ./MyScript.sh
bash ./MyScript.sh /home/nikhil/MyDocs
bash ./MyScript.sh /home/nikhil/MyDocs index.md
답변1
GNU를 사용하고 있으므로 make
다음을 사용할 수 있습니다.?=
운영자:
FOO ?= bar
그러나 이는 기존 null(또는 비어 있는) 값을 처리하지 않습니다. 다음은 누락된 값과 null 값을 처리합니다.
ifndef FOO
override FOO = bar
endif
test:
echo "$(FOO)"
.PHONY: test
(라인 6이 실제 탭으로 시작하는지 확인하세요.)
당신이 사용할 수있는
make FOO=blah
값을 설정합니다. make
또는 결국에는 로 make FOO=
설정됩니다 .FOO
bar
override
명령줄에 설정된 변수 재정의.