将Makefile变量打印为文本

时间:2016-09-28 08:22:07

标签: makefile syntax environment-variables

我没有找到任何相关内容,我正在尝试在我的Makefile中编写此规则。

setenv:
    @echo "export DYLD_LIBRARY_PATH=."
    @echo "export DYLD_INSERT_LIBRARIES=$(NAME).so"
    @echo "export DYLD_FORCE_FLAT_NAMESPACE=1"
    @echo "# Run eval $$(make setenv)"

因此,通过在终端中运行eval $(make setenv),将设置环境变量。

但它开始了无限循环。

我也尝试过:

\$(make setenv)

但没有任何作用......这是正确的语法是什么?

编辑:

\$$(make setenv)诀窍!

1 个答案:

答案 0 :(得分:1)

如果您要为其他食谱设置环境变量,请注意:

  • 使用$(shell export ...)无法工作:$(shell ...)总是会生成一个新的shell,因此导出到其中的任何内容都无法在该特定调用之外使用;
  • 在配方中使用export shell命令仅在使用.ONESHELL时才会起作用(不推荐),因为每个配方行都在不同的shell中运行。

将环境变量导出到子make和子shell的典型方法是使用export作为Makefile指令,如下所示:

export DYLD_LIBRARY_PATH=.
export DYLD_INSERT_LIBRARIES=$(NAME).so
export DYLD_FORCE_FLAT_NAMESPACE=1

外面任何食谱。