我使用的SCons功能(一)

SCons介绍

关于SCons的介绍IBM上有个很好的文章.这里贴点内容

make 这个工具自上个世纪 70 年代 Stuart Feldman 在贝尔实验室开发出以来,就一直是类 UNIX 程序员的最爱之一。 通过检查文件的修改时间,make 工具可以知道编译目标文件所要依赖的其他文件。在复杂的项目中,如果只有少数几个文件修改过, make 工具知道仅仅需要对哪些文件重新编译就可以确保目标程序被正确的编译链接。这样做的好处就是在编译中,不仅可以节省大量的重复输入, 还可以确保程序可以被正确的链接,缩短编译的时间。虽然如此,但是为 make 工具编写建造规则却不是一件容易的事。它复杂的配置规则, 即使是有经验的开发者也望而生畏。make 工具的许多替代品便因此而诞生,SCons 就是是其中之一。SCons 是一个用 Python 语言编写的类似于 make 工具的程序。 与 make 工具相比较,SCons 的配置文件更加简单清晰明了,除此之外,它还有许多的优点。SCons 是一个开放源代码、以 Python 语言编写的下一代的程序建造工具。它 最初的名字是 ScCons, 基于由 perl 语言编写的 Cons 软件开发而成,它在 2000 年 8 月获得了由 Software Carpentry 举办的 SC 建造比赛的大奖。 现在 ScCons 已经被改名为 SCons,目的是为了表示不再与 Software Carpentry 有联系,当然,还有一个目的,就是为了更方便的输入。 作为下一代的软件建造工具,SCons 的设计目标就是让开发人员更容易、更可靠和更快速的建造软件。与传统的 make 工具比较,SCons 具有以下优点:

  • 使用 Python 脚本做为配置文件
  • 对于 C,C++ 和 Fortran, 内建支持可靠自动依赖分析 . 不用像 make 工具那样需要 执行"make depends"和"make clean"就可以获得所有的依赖关系。
  • 内建支持 C, C++, D, Java, Fortran, Yacc, Lex, Qt,SWIG 以及 Tex/Latex。 用户还可以根据自己的需要进行扩展以获得对需要编程语言的支持。
  • 支持 make -j 风格的并行建造。相比 make -j, SCons 可以同时运行 N 个工作,而 不用担心代码的层次结构。
  • 使用 Autoconf 风格查找头文件,函数库,函数和类型定义。
  • 良好的夸平台性。SCons 可以运行在 Linux, AIX, BSD, HP/UX, IRIX, Solaris, Windows, Mac OS X 和 OS/2 上。

SCons安装

上面说了,SCons是基于Python,所以首先要安装好Python。 然后到SCons官网下载对应系统的SCons。在Win下,有直接安装的exe可以用。在Linux下面只要 setup.py install 即可, 非常方便。

SCons尝鲜

这个时候来尝试用SCons代替Makefile生成printhello

main.c

    #include <stdio.h>

    int main(int argc,char *argv[])
    {
        print("Hello");
        return 0;
    }

在Make中,我们的配置文件是Makefile,强烈推荐大家看下 酷壳浩哥的Makefile系列文章。而在SCons中的配置文件 就是 SConstruct文件,因此我们创建一个SConstruct文件

SConsturct

    Program('main','main.c')

然后运行

scons

看下,当前目录下是否生成了main以及main.o文件。在SCons的运行过程中,我们还可以看到

scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...  
scons: done building targets.

SCons的输出,从上面可以很清楚的了解SCons的执行过程,如果不想看到这些多于的输出,可以使用-Q命令

scons -Q
posted @ 2012-08-27 13:31  G背包  阅读(527)  评论(0编辑  收藏  举报