【问题标题】:How to define environment variable when running a compiled program with scons使用scons运行编译程序时如何定义环境变量
【发布时间】:2012-12-15 06:59:17
【问题描述】:

我确实编写了我的 SConstruct 文件,所以我通过 scons run 构建和运行程序

program = env.Program('build/output', Glob('build/test/*.cpp'))
env.Default(program)
env.Alias('run', program, program[0].abspath)

我可以编译我的程序并毫无问题地运行它,但是当我尝试在我的程序中使用 glut 和 opengl 时,出现以下错误:

/home/tran/workspace/bobail/build/test/test
freeglut (/home/tran/workspace/bobail/build/test/test): 无法打开显示''

经过一番搜索,我发现我编译的程序需要将环境变量 DISPLAY 设置为DISPLAY=:0。我尝试使用 Scons Export 命令,但到目前为止没有成功。

谁能告诉我怎么做。

编辑:如果我从命令行而不是 Scons 环境执行它,我的程序可以正常工作。

【问题讨论】:

    标签: environment-variables scons


    【解决方案1】:

    我知道怎么做。您需要检索 DISPLAY 全局环境并将其导入 scons 环境中。这就是你使用这个环境来定义运行程序的别名。

    test_env = Environment()
    test_env.Append(ENV = {'DISPLAY' : os.environ['DISPLAY']})
    test = test_env.Program(build_path + '/test/test', Glob(build_path + '/test/*.cpp'))
    test_env.Alias('check', test, test[0].abspath)
    

    【讨论】:

    • 我正要发布同样的内容。 +1 注意:如果你只想设置环境变量,你可以做 env = Environment(ENV = {'DISPLAY' : '0' })
    • 我注意到上面的代码有问题。如果未设置 DISPLAY 环境,则失败(最好在获取值之前检查是否已设置)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-10
    • 2020-12-18
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    • 2021-01-04
    • 1970-01-01
    相关资源
    最近更新 更多