Scons

23 篇文章 2 订阅

控制输出

        在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\n')

这样在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)

转自:Scons 三 - 一张红枫叶 - 博客园

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值