Scons软件构建工具

    scons是一个Python写的自动化构建工具,从构建这个角度说,它跟GNU make是同一类的工具。

    scons就是这样一个构建工具:你告诉它要做的任务,以及完成这个任务需要的输入,以及这个任务产生的输出,怎么做这个任务(当然其中就包括依赖性分析),就交给工具本身完成。

    scons主要的命令有:

    1. 只有一个 test.c文件,需要编译成可执行文件。
        创建SConstruct,内容为:
        Program('test.c')

     2. 只有一个文件,想编译成object文件。
         Object('test.c')

     3. 有多个.c文件,并想指定生成的程序名:
           Program('program', ['prog.c', 'file1.c', 'file2.c']) 或  Program('program', Glob["*.c"])

     4. SCons还对output file和source file有关键字,可以用来指定

             src_files = Split('main.c file1.c file2.c')
             Program(target = 'program', source = src_files)
                   因为有关键字指定,多以可以换前后:
             Program(source = src_files, target = 'program')
     5. 创建库:
           Library('foo', ['f1.c', 'f2.o', 'f3.c', 'f4.o'])
     6. 建立静态和动态库:
          静态库:其实使用Library也是建立静态库。
          StaticLibrary('foo', ['f1.c', 'f2.c', 'f3.c'])
          动态库:
           SharedLibrary('foo', ['f1.c', 'f2.c', 'f3.c'])

      7. 使用静态和动态库:
           使用$LIBS 来指定库,使用$LIBPATH 指定库位置。
           Library('foo', ['f1.c', 'f2.c', 'f3.c'])
           Program('prog.c', LIBS=['foo', 'bar'], LIBPATH='.')

     下面举例来说明:

       假设我有一个工程,工程目录如下:

       sconsTest

                   include

                               hello.h

                   src

                               hello.cpp

                   main

                               test.cpp

        在根目录sconsTest下创建名为"Sconstruct"的文件,内容如下:

            SConscript(['src/SConstruct','main/SConstruct'])
            obj_files=['main/test.obj','src/hello.obj']
            Program('hello', obj_files)

        在src和main目录下分别创建"Sconstruct"文件,内容分别为:

             Object('hello.cpp', CPPPATH=['../include'])

             Object('test.cpp', CPPPATH=['../include'])

        我们只需要在根目录"sconsTest"下执行"scons",即可生成一个名为"hello.exe"的可执行文件.

 

 

     在Scons中,还提供了环境变量,共分为3种环境变量:
        1. External Environment
        2. Construction Environment
        3. Execution Environment

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值