片段

片段

我有一个 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

设置一个值。makemake FOO=最终将设置FOObar;你需要override 覆盖命令行上设置的变量

相关内容