我的Makefile
规则中有哪些设置环境:
.ONESHELL:
set_db_env:
export DB_USER=XXX
export DB_PASS=YYY
我可以重复使用set_db_env
目标吗?
another_rule: set_db_env
echo ${DB_USER}
我也找到.EXPORT_ALL_VARIABLES,但不明白如何使用它。
UPD
我发现这个有用:
$(shell ${APP} db_env > ${CONF_DIR}/db_env.conf)
include ${CONF_DIR}/db_env.conf
但我不认为这是好方法
答案 0 :(得分:0)
通常,变量不会从一个规则传递到另一个规则。但有一种方法可以使用target-specific variables:
执行此操作another_rule: DB_USER=XXX
another_rule: DB_PASS=YYY
another_rule:
@echo user is ${DB_USER}
@echo pass is $(DB_PASS)
如果为每条规则编写这么多额外的行太繁琐了,你可以将它们包装在一个函数中:
define db_env
$(1): DB_USER=XXX
$(1): DB_PASS=YYY
endef
$(eval $(call db_env,another_rule))
another_rule:
@echo user is ${DB_USER}
@echo pass is $(DB_PASS)