scons是一个Python写的自动化构建工具,和GNU make相比优点明显
来源:互联网 发布:淘宝好的第三方活动 编辑:程序博客网 时间:2024/06/04 18:54
一、概述
scons是一个Python写的自动化构建工具,和GNU make相比优点明显:
1、 移植性:python能运行的地方,就能运行scons
2、 扩展性:理论上scons只是提供了python的类,scons使用者可以在这个类的基础上做所有python能做的事情。比如想把一个已经使用了Makefile大型工程切换到scons,就可以保留原来的Makefile,并用python解析Makefile中的编译选项、源/目标文件等,作为参数传递给scons,完成编译。
3、 智能:Scons继承了autoconf/automake的功能,自动解析系统的include路径、typedef等;“以全局的观点来看所有的依赖关系”
二、scons文件
scons中可能出现的文件:
SConstruct,Sconstruct,sconstruct,SConscript
scons将在当前目录以下次序 SConstruct,Sconstruct,sconstruct 来搜索配置文件,从读取的第一个文件中读取相关配置。
在配置文件SConstruct中可以使用函数SConscript()函数来定附属的配置文件。按惯例,这些附属配置文件被命名为”SConscript”,当然也可以使用任意其它名字。
三、scons的命令行参数
scons: 执行SConstruct中脚本scons -c cleanscons -Q 只显示编译信息,去除多余的打印信息scons -Q --implicit-cache hello 保存依赖关系 --implicit-deps-changed 强制更新依赖关系 --implicit-deps-unchanged 强制使用原先的依赖关系,即使已经改变
四、SConstruct提供的方法
1、Program:生成可执行文件
Program('hello.c') 编译hello.c可执行文件,根据系统自动生成(hello.exe on Windows; hello on POSIX)Program('hello','hello.c') 指定Output文件名(hello.exe on Windows; hello on POSIX)Program(['hello.c', 'file1.c', 'file2.c']) 编译多个文件,Output文件名以第一个文件命名Program(source = "hello.c",target = "hello")Program(target = "hello" , source = "hello.c")Program('hello', Split('hello.c file1.c file2.c')) 编译多个文件Program(Glob("*.c"))src = ["hello.c","foo.c"];Program(src)
2、Object:生成目标文件
Object('hello.c') 编译hello.c目标文件,根据系统自动生成(hello.obj on Windows; hello.o on POSIX)
3、Library:生成静态/动态库文件
Library('foo', ['f1.c', 'f2.c', 'f3.c']) 编译librarySharedLibrary('foo', ['f1.c', 'f2.c', 'f3.c']) 编译 shared libraryStaticLibrary('bar', ['f4.c', 'f5.c', 'f6.c']) 编译 static library
库的使用:
Program('prog.c', LIBS=['foo', 'bar'], LIBPATH='.') 连接库,不需加后缀或是前缀
4、SourceSignatures:判断源文件是否修改
SourceSignatures('MD5') 根据内容是否改变,默认方式SourceSignatures('timestamp') 根据修改时间
5、TargetSignatures:判断目标文件是否改变
TargetSignatures('build') 根据编译结果TargetSignatures('content') 根据文件内容,如果只是加了句注释,将不会被重新编译
6、Ignore:忽略依赖关系
Ignore(hello, 'hello.h') 忽略某个依赖关系
7、Depends:明确依赖关系
Depends(hello, 'other_file') 明确依赖关系
8、SConscript:scons的配置文件。
源文件的目录结构如下:src:| SConstruct| test.cpp| mA(目录): | SConscript | func.cpp其中test.cpp为主文件,中调用func.cpp中定义的函数
出处:http://blog.csdn.net/sealyao/article/details/6402257
参考资料:http://www.ibm.com/developerworks/cn/linux/l-cn-scons/
- scons是一个Python写的自动化构建工具,和GNU make相比优点明显
- scons —— Python自动化编译构建工具
- Python自动化构建工具scons使用入门笔记
- 介绍一个很酷的构建工具 : scons
- 好用的程序构建工具scons
- Scons软件构建工具
- 多文件项目和 GNU Make 工具
- GNU make、NMake、Autotools 、waf、cmake、premake 等构建工具
- 使用Scons软件构建工具
- 使用scons软件构建工具
- 使用scons软件构建工具
- c++构建工具之shell,configure,make,cmake,scons,xmake简析总结
- 强大的 GNU AUTO MAKE工具集
- 双链表相比单链表的优点
- GNU Make 工具
- gnu make工具
- GNU make工具本质
- 分享一个自己写的httpWatch自动化测试工具
- 压力测试和性能测试的区别
- thrift开发的例子(一)---python为例
- C3P0数据源
- Probability to form a triangle by splitting a stick
- java/android 设计模式学习笔记(5)---对象池模式
- scons是一个Python写的自动化构建工具,和GNU make相比优点明显
- BZOJ 1001 构造对偶图 + dijkstra_heap
- 初次来CSDN!
- IM分布式压力测试工具设计(类loadrunner)
- Spark函数讲解:checkpoint
- 新一代与12-factors:构建,发布,运行
- 数据结构实验之栈三:后缀式求值
- 2016"百度之星" - 初赛(Astar Round2B)
- SQL数据库设计(一)---需求分析与逻辑设计