bash - 是否可以在 Makefile 中设置环境变量 - 之后使用

标签 bash makefile gnu-make

我正在尝试在 Makefile 中设置一个环境变量,以便它可以在 sam shell 中运行的另一个程序中使用,如 make ,但在 make 之后已经运行。

更新:根据已接受的带有评论的答案,这是不可能的。

脚步:

  • 运行 make test设置环境:export TEST_ENV_ONE=OneString
  • 运行另一个程序,可以读取 TEST_ENV_ONE

  • 试过这个:

    不工作:
    test:
        export TEST_ENV_ONE=OneString
        $(shell export TEST_ENV_TWO=TwoString)
    

    之后这是空的:
    echo $TEST_ENV_ONE
    echo $TEST_ENV_TWO
    

    最佳答案

    您的 export TEST_ENV_ONE=OneString以上是在专用 shell 中运行。后续命令在其他 shell 实例中运行。因此,它们不继承环境变量 TEST_ENV_ONE .

    您可以使用顶级(即不在目标的配方中) export directive在生成文件中:

    export env_var := MyEnvVariable
    
    .PHONY: all
    all:
        echo env_var: $$env_var
    

    这样,变量 env_var导出到将执行配方的 shell 。

    如果您运行 make使用上面的makefile:
    $ make
    echo env_var: $env_var
    env_var: MyEnvVariable
    

    从输出中可以看出,运行 echo env_var: $env_var 的 shell有变量 env_var在它的环境中。

    关于bash - 是否可以在 Makefile 中设置环境变量 - 之后使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52114730/

    相关文章:

    bash - Cygwin 将文本换回到同一行,导致文本被覆盖

    android - 如何在Android Project中快速构建模块?

    makefile - GNU Make——模式匹配的依赖关系

    linux - bash 错误 : find: I cannot figure out how to interpret ‘2018-26-01’ as a date or time

    linux - 如何在终端中更改 ls -a

    c - Makefile - 在单独的文件中包含路径

    linux - LD_LIBRARY_PATH : Does only work when startup call is also on same line

    c - Makefile 问题 - 无法理解问题出在哪里

    c - 使文件对预处理器定义敏感

    linux - 如何使用 telnet 获取外部连接的 IP,或者可能是 memcached 允许的 ip 的配置错误