【问题标题】:Scons doesn't use my environment variables such as PATH and LD_LIBRARY_PATHScons 不使用我的环境变量,例如 PATH 和 LD_LIBRARY_PATH
【发布时间】:2016-06-22 08:33:09
【问题描述】:

我有一个小问题。

我提供了一个脚本来更改我的 RedHat 环境(PATH、LD_LIBRARY_PATH 等)。

当我使用 scons 启动我的安装时,它会从我的机器中收取默认环境,而不是我加载的当前环境...

我尝试了几次,但都没有定论。网上的大多数答案都与必须在 SConstruct 中设置的一个变量的更改有关。

我如何告诉 scons 为当前环境充电,而不是默认的?

提前致谢!

【问题讨论】:

    标签: environment-variables environment scons


    【解决方案1】:

    SCons 的方式是在您的 SConstruct/SConscripts 中设置这些环境变量,以便每个用户最终都会获得一个可重现的构建环境。

    阅读常见问题解答:http://scons.org/faq.html#Why_doesn.27t_SCons_find_my_compiler.2BAC8-linker.2BAC8-etc..3F_I_can_execute_it_just_fine_from_the_command_line

    SCons 不会自动将用于执行“scons”的外部环境传播到用于构建目标文件的命令。这样可以保证构建可重复,而不管调用 scons 时设置的环境变量如何。这也意味着,如果您要用于构建目标文件的编译器或其他命令不在标准系统位置,SCons 将找不到它们,除非您明确设置 PATH 以包含这些位置。

    【讨论】:

    • 我理解其中的原理,但这会给最终用户带来太多痛苦,因为您必须修补脚本才能使 SCons 在不同的发行版上工作(这些发行版的库分散在不同的地方)。拥有可重复构建的唯一方法是 Docker :-)
    • 如果意图是让构建传播所有或部分 shell 环境变量,则可以在 SConstruct/SConscripts 中传播。因此,实际上是软件开发人员选择在这里做什么。 SCons 不会强加任何一种方式。
    【解决方案2】:

    经过一番搜索后已经找到了解决方案:env = Environment(ENV = os.environ)

    【讨论】:

    • 请谨慎使用此代码 sn-p。如果其他人必须运行您的脚本,或者您曾经更改用户环境,它最终会烧毁您。
    • 这是在 SCons 的常见问题解答中...scons.org/….
    猜你喜欢
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    • 2019-06-30
    • 1970-01-01
    • 2019-05-15
    相关资源
    最近更新 更多