位置:首页 > Scons介绍与使用 >

Scons介绍与使用

作者:小牛君|发布时间:2017-03-24

小牛学堂的课程大纲最近进行了再一次升级,并且同时推出Java大数据平台开发班、Python爬虫与数据挖掘班、Spark项目班、Spark大神班、机器学习算法实战班、BI数据分析实战班, 目前这类人群凤毛麟角,导致这个行业的平均薪资极高,为此小牛学堂集合了行业的诸多大牛开设对应班级,为想学习的同学提供机会!
如果想了解详细情况,请联系 今日值班讲师 或者直接加入千人QQ群进行咨询:210992946

以下是本文正文:



1、  概述

Scons类似于automake/autoconf,是下一代软件自动构建工具。它跨平台,能够帮助我们更方便,可靠,快速的构建软件。使用scons时,只需要编写一个SConstruct文件(它实际上是一个python文件),根据此文件,scons可以自动完成依赖关系的推导及编译链接等过程。

2、  Scons初体验

首先需要安装scons软件,我采用的是Ubuntu系统(已经安装gcc),直接执行命令:sudo apt-get install scons。

然后创建目录test,在该目录下分别编写hello.c文件和SConstruct文件,两个文件的内容分别为:


//hello.c

#include<stdio.h>

int main(){

printf("hello world!\n");

return 0;

}

# SConstruct

Program('hello.c');

然后在该目录下运行命令:scons,可以看到以下界面显示:


scons: Reading SConscript files ...

scons: done reading SConscript files.

scons: Building targets ...

gcc -o hello.o -c hello.c

gcc -o hello hello.o

scons: done building targets.

查看当前目录中的文件,发现多了两个,分别为hello.o和hello,直接执行./hello便可获取程序输出。

3、  Scons使用方法

(1)       编译可执行文件

直接使用Program函数即可

(2)       编译静态库

使用Library或者staticLibrary函数, 如:要将文件f1.c,f2.c和f3.c编译成静态库libfoo.a,可这样编写SConstruct文件:

Library(‘foo’, [‘f1.c’, ‘f2.c’, ‘f3.c’])

(3)       编译动态库

使用SharedLibrary函数,如以上三个文件要生成动态库libfoo.so,则可这样编写SConstruct文件:

SharedLibrary(‘foo’, [‘f1.c’, ‘f2.c’, ‘f3.c’])

4、  Scons编译多个程序

(1)       以python数组的形式列出所有需要编译的源文件,如:要编译file1.c, file2.c, file3.c以生成可执行文件program,可这样编写SConstruct:

Program(’program’, [‘file1.c’, ‘file2.c’, ’file3.c’])

(2)       使用正则表达式(使用Glob函数):

Program(‘program’, Glob(‘*.c’))

(3)       链接库

Library(‘foo’, [‘f1.c’, ‘f2.c’, ‘f3.c’])

Program(‘prog.c’, LIBS=[‘foo’, ‘bar’], LIBPATH=’.’, CCFLAGS=’DHELLO’)

5、  总结

Scons作为一个新型高效的自动软件构件工具,将大大简化我们进行软件开发和维护。

6、  参考资料

(1)       scons主页:http://www.scons.org/

(2)       scons文档:http://www.scons.org/documentation.php


了解更多详情请联系 今日值班讲师 或者直接加入千人QQ群进行咨询:210992946

分享到: