将环境变量从一个公共目标导出到 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