将环境变量从一个公共目标导出到 Makefile 中的所有目标
exporting env variables from a common target to all targets in Makefile
我有一个共同的目标,就是在 Makefile 中设置一堆这样的环境变量
# file common.mk
setup :
export LD_LIBRARY_PATH=${MY_HOME}/LIBS:${LD_LIBRARY_PATH}
export MY_VERSION=2.2
...
现在我想在所有 make 目标中使用这些变量
#file Makefile
include ${MY_RUN_DIR}/common.mk
run : setup
# export all the variables
# do domething
现在,当我执行 make run
时,我看不到正在设置的变量。这是因为所有变量仅在“设置”目标中设置。
我有 100 多个 Makefile,我必须在其中添加所有导出变量,我宁愿只添加一行而不是导出所有变量。
如何将变量从一个目标导出到我想要的所有目标?
只是不要将分配放在规则中:
# file common.mk
export LD_LIBRARY_PATH=${MY_HOME}/LIBS:${LD_LIBRARY_PATH}
export MY_VERSION=2.2
...
并且不要为先决条件而烦恼 setup
:
#file Makefile
include ${MY_RUN_DIR}/common.mk
run:
# do something, such as
@echo my version is $$MY_VERSION
我有一个共同的目标,就是在 Makefile 中设置一堆这样的环境变量
# file common.mk
setup :
export LD_LIBRARY_PATH=${MY_HOME}/LIBS:${LD_LIBRARY_PATH}
export MY_VERSION=2.2
...
现在我想在所有 make 目标中使用这些变量
#file Makefile
include ${MY_RUN_DIR}/common.mk
run : setup
# export all the variables
# do domething
现在,当我执行 make run
时,我看不到正在设置的变量。这是因为所有变量仅在“设置”目标中设置。
我有 100 多个 Makefile,我必须在其中添加所有导出变量,我宁愿只添加一行而不是导出所有变量。
如何将变量从一个目标导出到我想要的所有目标?
只是不要将分配放在规则中:
# file common.mk
export LD_LIBRARY_PATH=${MY_HOME}/LIBS:${LD_LIBRARY_PATH}
export MY_VERSION=2.2
...
并且不要为先决条件而烦恼 setup
:
#file Makefile
include ${MY_RUN_DIR}/common.mk
run:
# do something, such as
@echo my version is $$MY_VERSION