我有一个 Makefile,它有一个变量,该变量需要有一个默认值,以防变量未设置或设置但具有空值。
我怎样才能实现这个目标?
我需要这个,因为我在 shell 脚本内调用 make,并且 makefile 所需的值可以作为 $1 从 shell 传递。为了将其传递给 makefile,我必须将其设置在 bash 脚本中。
想法:(不优雅)在 bash 脚本内,可以检查变量是否已设置但具有空值,在这种情况下可以取消设置。
片段
注意:如果变量未在终端中定义,则以下内容将不起作用,因为它们是在 bash 脚本中设置的。
生成文件
dSourceP?=$(shell pwd)
Source?=$(notdir $(wildcard $(dSourceP)/*.md))
bash脚本
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
但这并不处理预先存在的空(或者更确切地说,空)值。以下处理缺失值和空值:
ifndef FOO
override FOO = bar
endif
test:
echo "$(FOO)"
.PHONY: test
(确保第 6 行以真正的制表符开头。)
你可以使用
make FOO=blah
设置一个值。make
或make FOO=
最终将设置FOO
为bar
;你需要override
覆盖命令行上设置的变量。