zoukankan      html  css  js  c++  java
  • Scons 三

    控制输出:

    在scons脚本调试中,输出是一个重要的环节,通过输出我们可以观察调试期间的步骤,便于定位问题

    Help函数可以输出help相关的打印

    Help("""

        scons help command

    """)

    当执行scons -h的时候,就会打印出相关的text

    scons: Reading SConscript files ...

    cc=gcc

    /home/maple/posix_thread

    /home/maple/scons_prj:/usr/local/bin:/opt/bin:/bin:/usr/bin

    gcc

    scons: done reading SConscript files.

        scons help command

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

    $*COM参数

    如果我们想在编译或者链接的时候有相应的打印。则可以用到$*COM参数,比如编译的参数CCCOMSTR,链接的参数LINKCOMSTR。在Environment设置这两个参数

    env = Environment(CCCOMSTR="Compileing $TARGET",LINKCOMSTR="Linking $TARGET")

    打印如下,可以看到对应的输出。

    scons: Reading SConscript files ...

    scons: done reading SConscript files.

    scons: Building targets ...

    Compileing scon_test.o

    gcc -o test.o -c test.c

    gcc -o test test.o

    Linking scon_test

    scons: done building targets.

    Progress方法

    在scons执行的过程中,我们想知道scons每一步都在干什么。可以用到Progress方法。

    Progress('Evaluating $TARGET ')

    这样在scons每次执行的过程中都会打印Evaluating target名字. 打印如下:

    scons: Reading SConscript files ...

    scons: done reading SConscript files.

    scons: Building targets ...

    Evaluating Sconstruct

    Evaluating scon_test.c

    Evaluating inc/var.h

    Evaluating /usr/bin/gcc

    Evaluating scon_test.o

    gcc -o scon_test.o -c -O2 -Iinc scon_test.c

    Evaluating test.c

    Evaluating test.o

    gcc -o test.o -c test.c

    Evaluating test

    gcc -o test test.o

    Evaluating src/libfunc.a

    Evaluating scon_test

    gcc -o scon_test scon_test.o -Lsrc -lfunc

    Evaluating inc

    Evaluating src

    Evaluating .

    scons: done building targets.

    如果想得到编译失败的信息,可以用GetBuildFailures函数,并用atexit将这个错误打印函数注册进去。

    import atexit

    def print_build_failures():

    from SCons.Script import GetBuildFailures

    for bf in GetBuildFailures():

    print("%s failed: %s" % (bf.node, bf.errstr))

    atexit.register(print_build_failures)

  • 相关阅读:
    Redis 如何设置密码及验证密码?
    怎么测试 Redis 的连通性?
    Redis 的内存用完了会发生什么?
    假如 Redis 里面有 1 亿个 key,其中有 10w 个 key 是以 某个固定的已知的前缀开头的,如果将它们全部找出来?
    使用过 Redis 做异步队列么,你是怎么用的?
    简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别 ?
    你怎么看到为表格定义的所有索引?
    深入理解卷积网络的卷积
    OpenCV-Python 图像阈值 | 十五
    OpenCV-Python 图像的几何变换 | 十四
  • 原文地址:https://www.cnblogs.com/zhanghongfeng/p/12837019.html
Copyright © 2011-2022 走看看