使用scons软件构建工具
来源:互联网 发布:人力资源网站源码 编辑:程序博客网 时间:2024/04/27 22:09
scons是一个比较有意思的软件构建工具,其本意是想替代着名的autotools系列,我没有用过autotools,不过看到网上的 autotools使用教程就头晕,后来听说了scons,就仔细下载了它的文档看了一下,觉得很符合我的口味。scons与autotools和 cmake等工具不同的是,它并不是从一个类似工程配置的文件中生成Makefile,再调用make进行编译,而是直接控制编译器,从这个意义上来说,它其实并不是替代autotools,而是make!下面是一个简单的例子,如果你想编译着名的hello.c文件:
#include <stdio.h>
int main(){
printf("hello,world\n");
return 0;
}
只需在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软件构建工具
- 使用scons软件构建工具
- 使用scons软件构建工具
- Scons软件构建工具
- Python自动化构建工具scons使用入门笔记
- scons 工具使用
- scons 工具使用
- 使用scons构建windows程序
- 使用SCons轻松构建程序
- 使用scons构建windows程序
- 构建工具scons让一切变得简单
- [BuildRelease]跨平台构建工具SCons
- 好用的程序构建工具scons
- Scons自动大型系统构建工具的介绍与使用(原创)
- 使用 SCons 代替 Makefile 快速构建应用程序
- 使用 SCons 代替 Makefile 快速构建应用程序
- 介绍一个很酷的构建工具 : scons
- scons —— Python自动化编译构建工具
- 【转载】他是个残疾人 mynote V1.01发布
- Find 使用技巧
- 主题: 分页符的BUG,在不同浏览器下代码是不一样的
- Android中处理崩溃异常
- PHP防止伪造跨站请求:表单中插入隐藏的随机串
- 使用scons软件构建工具
- 第一、UITableView的使用大全
- 设计模式-03-抽象工厂模式
- Cocos2d-x 简单数据存储以及抗锯齿
- Cannot instantiate the type Map
- JS小知识
- 计算标准体重
- C# DateTime修改小技巧
- Android Looper和Handler