bash - 如果设置,则使用环境变量,否则在 makefile 中使用默认值
问题描述
我可以做这个:
MY_VAR:=$(myvar)
但我想要的是也为 MY_VAR 定义一个值,如果未定义环境变量 myvar 则使用该值。这可能吗?
就像是:
# pseudo code
MY_VAR:=if not $(myvar) then someDefaultValue
解决方案
假设make
是 GNU Make,所有继承的环境变量设置都会make
自动注册为make
变量设置。请参阅6.10 环境变量。所以你可以写,例如
生成文件 (1)
ifdef myvar
MYVAR := $(myvar)
else
MYVAR := default
endif
.PHONY: all
all:
echo $(MYVAR)
运行如下:
$ make
echo default
default
myvar
环境中未定义何时;当它被定义时,运行如下:
$ export myvar=notDefault
$ make
echo notDefault
notDefault
如果环境变量和make
变量相同 - 为什么不呢?- 它仍然更简单。
生成文件 (2)
MYVAR ?= default
.PHONY: all
all:
echo $(MYVAR)
请参见6.5 设置变量
然后:
$ make
echo default
default
$ export MYVAR=notDefault
$ make
echo notDefault
notDefault
推荐阅读
- avx - 在 AVX 中进行线性平均的最短方法
- php - PHP array_diff_assoc 在同一个变量中
- python-3.x - 迭代字典“int对象不可下标”Python 3中的整数键时出错
- java - JavaFX 中的可编辑表格单元格在尝试再次编辑时显示旧值
- java - 是否有工具将 JUnit java 类文件从 Selenium IDE 转换为测试类和尊重 POM 模式的对象页面?
- python - 为什么我无法在 VS Code 的外部终端中捕获 ctrl+C 键(python 的 KeyBoardInterrupt 异常)?
- json - 根据响应变量调节下一篇文章 cmd
- java - Android 工具栏崩溃问题 - 并非所有设备
- javascript - 类继承和构造函数
- azure-data-factory-2 - 如何在 Azure 数据工厂数据流 JSON 接收器中设置日期格式?