scons 是一个比较有意思的软件构建工具,其本意是想替代著名的autotools系列,我没有用过autotools,不过看到网上的 autotools使用教程就头晕,后来听说了scons,就仔细下载了它的文档看了一下,觉得很符合我的口味。scons与autotools和 cmake等工具不同的是,它并不是从一个类似工程配置的文件中生成Makefile,再调用make进行编译,而是直接控制编译器,从这个意义上来说, 它其实并不是替代autotools,而是make!下面是一个简单的例子,如果你想编译著名的hello.c文件:

  1. #include <stdio.h>
  2. int main(){
  3. printf("hello,world\n");
  4. return 0;
  5. }

只需在hello.c的当前目录下建立一个叫SConstruct的文件:

 Program('hello,'hello.c')

然后运行scons就可以了,scons会自动调用gcc(不是make)来编译生成可执行程序hello。如果hello.c中引用了foo.h这个头文件,而foo.h声明的函数定义在foo.c,则SConstrut可以写成:

 Program('hello',['hello.c','foo.c'])

Program的第一个参数是目标,后面可以是单个源文件名或源文件名数组。注意,scons是很智能的,它知道hello.c依赖于 foo.h,所以当foo.h发生改变时,就会重新编译hello.c。这个依赖关系不需要我们额外写代码。如果源文件太多了,全写在那个数组里太长了, 而源文件都是在同一个目录以.c为后辍时,我们可以简写如下:

 Program('hello',Glob("*.c"))

如果程序引入了其它的库,库名为libbar.a,库的目录为/usr/local/lib:

 Program('hello',Glob("*.c"),LIBS='bar',LIBPATH='/usr/local/lib')

如果使用了pkg-config来管理库,可以用环境(Enviroment)如下,例如我使用了GTK+ 2.0:

env=Enviroment()

env.ParseConfig("pkg-config --libs --cflags gtk+-2.0")

env.Program('hello',Glob("*.c"))

scons除了可以编译C/C++程序以外,它还可以编译LaTeX,如

 DVI('paper.dvi','paper.tex')

就可以用latex命令来编译paper.dvi文件,scons还可以编译Java等其它类型的程序,具体内容见scons的官方文档。
    scons本身有一些设计得很好的地方,SConstruct的本身是一个合法的Python程序,它并没有像c,make那样使用自有的配置文件格式, 可以使用所有Python的实用库来完成更高级的运用。还有它判断文件更改是默认情况下不是根据时间戳,而是MD5码!所以上面foo.h被touch 了,并不会导致重新编译。scons的缺点是其效率太低,速度太慢。

使用scons软件构建工具相关推荐

  1. linux内核使用scons构建,使用scons软件构建工具

    scons 是一个比较有意思的软件构建工具,其本意是想替代著名的autotools系列,我没有用过autotools,不过看到网上的 autotools使用教程就头晕,后来听说了scons,就仔细下载 ...

  2. SCons — 程序构建工具

    目录 文章目录 目录 SCons - a software construction tool 使用示例 SCons - a software construction tool SCons 类似于 ...

  3. 「Gradle学习笔记」一、构建工具

    构建工具的产生   在项目开发过程中,出于测试或正式发布的目的,需要进行一系列步骤来构建项目生成可执行的二进制文件.一般来说,首先需要确定项目所需的依赖都已正确安装,然后将项目源代码和依赖编译链接生成 ...

  4. c++构建工具之shell,configure,make,cmake,scons,xmake简析总结

    前言 说到编译工具,在windows下必言vs,在linux下必言make. 0.shell 如果编译一个库的命令太复杂或者为了方便,我们更愿意将编译命令写成一个shell脚本来执行,比如build. ...

  5. 效率神器 SCons 构建工具

    SCons 是一个 Python 编写的开源的自动化构建工具(确切来说,是下一代构建工具) .可以将 SCons 视为经典构建工具 Make 的跨平台的改进版本,其具有类似于 autoconf / a ...

  6. SCons 构建工具

    SCons 简介 SCons 是一套由 Python 语言编写的开源构建系统,类似于 GNU Make.它采用不同于通常 Makefile 文件的方式,而是使用 SConstruct 和 SConsc ...

  7. linux内核使用scons构建,linux下编译构建工具--scons下载地址及说明

    介绍:Scons是一个开放源码.以Python语言编码的自动化构建工具,可用来替代make编写复杂的makefile.并且scons是跨平台的,只要scons脚本写的好,可以在Linux和Window ...

  8. 【软件构造】第二章 软件构建的过程和工具(2)

    二.软件构造的编程.系统.工具 [广义软件构造的过程] 1. 编程 (1)开发语言:Java.C.C++.Python等 ·IDE:集成开发环境 - 方便编写代码和管理文件 - 能够编译.构建 - 结 ...

  9. python自动化构建工具_Python自动化构建工具scons使用入门笔记

    这段时间用到了scons,这里总结下,也方便我以后查阅. 一.安装sconsLinux环境(以CentOS为例) 1.yum安装 yum install scons 2.源码安装 下载scons:ht ...

最新文章

  1. 女装、退学、离职谷歌,他活成了别人不敢想的样子
  2. mysql error 10048_mysql 连接异常(10048)
  3. 揭秘物联网之城无锡鸿山的科技密码
  4. 【新星计划】汽车纵向动力学模型
  5. 关掉windows自动更新
  6. 在MySql中,这四种方法可以避免重复插入数据!
  7. html table 向上滚动,决策报表的表格自动向上滚动问题
  8. 文本文件以EF BB开头,使用UTF8读取
  9. Mimics 21.0 安装
  10. Python 实现控制一阶惯性系统
  11. 电脑桌面双击计算机图标打不开,电脑双击图标打不开怎么办
  12. uv转化率多少正常_浏览量(PV)和访客数(UV)和跳出率是什么意思?
  13. 好把旧书多读到 义言一出见英明
  14. 父子齐上阵,一起“闹天宫”
  15. node 单元测试_如何在Node中模拟对单元测试的请求
  16. Unable to load DLL 'xxx.dll': 找不到指定的模块。 (Exception from HRESULT: 0x8007007E)
  17. Excel表格怎么转PDF?这两种途径都可以
  18. 设计师想法_设计师阻止了想法一旦出现时该怎么办
  19. 在公路项目里路缘石滑模机施工作业需要注意这些
  20. C语言用数组计算成绩平均值,C程序使用数组计算平均值

热门文章

  1. 文件读写r,rb,w,wb区别(对于换行符的处理)
  2. Virtualbox+Vagrant搭建linux虚拟机并搭建easySwoole框架
  3. 站队 第一类斯特林数 csJ精英挑战营习题
  4. 【图像处理】Niblack
  5. Retry attempted 10 times without completing, bailing out解决
  6. EF(ADO.NET Entity Framework)
  7. ABAP内表与工作区的区别与作用
  8. excel-批量创建工作表
  9. 按键精灵直接运行cmd指令
  10. 【Stateflow入门】任务7.构建扫地机器人