파편

파편

변수가 설정되지 않았거나 설정되었지만 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=설정됩니다 .FOObaroverride 명령줄에 설정된 변수 재정의.

관련 정보