SCons教程(6) 环境

环境

外部环境

用户在执行 SCons 的外部环境变量设置是,可以使用 pythonos.ennviron 模块,可以将 import os 放在任意 SConstruct 中,并在该文件中使用用户外部环境变量。

import os

env = os.environ
print("current OS is", env["OS"])

执行 socns 结果就是 ‘Windows_NT’,对此,认为可以使用用户环境变量或者是系统环境变量。

admin@DESKTOP-NQU1HUV C:\Users\admin\Desktop\scons\day6
$ scons -Q
('current OS is', 'Windows_NT')
scons: `.' is up to date.

特此说明,SCons 可以使用大部分 python 中的语法、环境、库等信息,模块调用也可以共享。

本地环境

在一个构建环境中,可以对环境内容进行设置,例如设置不同编译器,优化等级,库文件,头文件搜索路径或者其他参数,此时需要使用 Environment 相关函数。

创建一个环境

env = Environment(CC='gcc', CCFLAGS='-O2')
env.Program('hello.c')

执行 scons 之后的结果就是下面结果,可以看出和之前不同的是,编译语句增加了 -O2 的优化等级,和设置的一致。

admin@DESKTOP-NQU1HUV C:\Users\admin\Desktop\scons\day6
$ scons -Q
gcc -o hello.o -c -O2 hello.c
gcc -o hello.exe hello.o

除了可以设置环境变量之外,也可以通过 get 函数获取变量的值,并打印输出。

env = Environment()
print("CC is: %s" % env['CC'])
print("LATEX is: %s" % env.get('LATEX', None))

执行 scons 之后的结果就是下面结果,默认编译器就是 gccLATEX 变量没有值,使用了设置的默认值 None

admin@DESKTOP-NQU1HUV C:\Users\admin\Desktop\scons\day6
$ scons -Q
CC is: gcc
LATEX is: None
scons: `.' is up to date.

查看默认 SCons 的默认变量,可以使用下面语句:

env = Environment()
for item in sorted(env.Dictionary().items()):
    print("construction variable = '%s', value = '%s'" % item)

# 或者
env = Environment()
print(env.Dump())

命令行参数

增加 help 语句

在一个命令不知道怎么使用时,使用 --help 来获取当前命令的选项帮助是最好的方法。SCons 也是提供了 help 选项的编写,可以帮助用户简单的创建 --help 的语句。

Help("""
Type: 'scons program' to build the production program,
'scons debug' to build the debug version.
""")
admin@DESKTOP-NQU1HUV C:\Users\admin\Desktop\scons\day6
$ scons -h
scons: Reading SConscript files ...
scons: done reading SConscript files.

Type: 'scons program' to build the production program,
'scons debug' to build the debug version.

Use scons -H for help about command-line options.


使用 -H 可以看有关 SCons 的帮助文档。


admin@DESKTOP-NQU1HUV C:\Users\admin\Desktop\scons\day6
$ scons -H
usage: scons [OPTION] [TARGET] ...

SCons Options:
  -b, -d, -e, -m, -S, -t, -w, --environment-overrides, --no-keep-going,
  --no-print-directory, --print-directory, --stop, --touch
                              Ignored for compatibility.
  -c, --clean, --remove       Remove specified targets and dependencies.
  -C DIR, --directory=DIR     Change to DIR before doing anything.
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值