我没有找到任何相关内容,我正在尝试在我的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)
诀窍!
答案 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
外面任何食谱。