Bash
Makefile:已設置但具有空值的變數的預設值
我有一個 Makefile,它有一個變數,當變數未設置或設置但具有空值時,該變數需要具有預設值。
我怎樣才能做到這一點?
我需要這個,因為我在 shell 腳本中呼叫 make 並且 makefile 所需的值可以從 shell 作為 $1 傳遞。並將其傳遞給 makefile 我必須將其設置在 bash-script 中。
想法:(不優雅)在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
由於您使用的是 GNU ,
make
因此您可以使用operator:?=
FOO ?= bar
但這不涉及預先存在的空(或者更確切地說,空)值。以下處理缺失值和空值:
ifndef FOO override FOO = bar endif test: echo "$(FOO)" .PHONY: test
(確保第 6 行以真正的製表符開頭。)
你會用
make FOO=blah
設置一個值。
make
或make FOO=
將最終設置FOO
為bar
; 您需要override
覆蓋在命令行上設置的變數。