读书人

构基建工具scons让一切变得简单

发布时间: 2012-08-30 09:55:54 作者: rapoo

构建工具scons让一切变得简单
你曾经为繁琐的makefile语法纠结过吗?你有想要摆脱VS的束缚,自己构建工程却又苦于无从下手吗?你有为同一个工程要在不同操作系统或不同平台下构建编译环境而苦恼过吗? 本文有我的选择,你的答案。
最近小试了一把用scons来构建编译环境,感觉很不错,跟大家分享一下。先说明下什么是scons,scons是一个Python写的自动化构建工具,就比如老牌的cmake,或者如果经常跟google一些开源项目打交道的话,那肯定知道新近开始流行的gyp(google内部用的构建工具),scons实现跟它们有类似的功能。而scons又有区别于其他构建工具的特点,不得不承认,这些特点让我喜欢上了这个工具。先简单总结下吸引我的几点:1. 自动依赖分析2. 工具本身由python实现,跨平台3. 基于MD5识别构建文件的改变,并且可以自定义和扩展4. 构建文件逻辑用python来写,功能强大,扩展性超强,跨平台5. 简单易用(半小时内可以学会如何构建中小规模编译环境)6. 官方提供的文档详细易理解(如果看过google的gyp的文档,那叫一个坑爹)
好了,进入正题,就让我们来循序渐进的来领略下scons的魅力吧。首先是安装环境,第一步当然是要保证系统中安装了python,貌似2.6和2.7下scons都没有问题,其他的自己尝试下吧。第二步,安装scons。windows环境的话直接去官网下载exe直接安装即可。linux Debian系统下则更方便,可以直接用如下命令来安装:sudo apt-get install scons安装完成后,在命令行验证一下,输入scons -v, 如果没有提示scons命令不存在则说明安装成功。不幸的是,windows下还真提示不存在了,怎么办?其实在python安装路径C:\Python27\Scripts下(我的python安装在C:\Python27)有个scons.bat,以后运行这个命令就可以(/scons.bat -v),为了方便可以把该路径追加到环境变量PATH中。ok,环境搞定。
接着,一起来细细品味下scons吧。1. 假设有如下【helloScons.c】文件:

import osif os.name == "posix":     SharedLibrary('ext/extScons.c')     Program(['helloScons.c'], LIBS=['extScons'], LIBPATH='./ext')elif os.name == "nt":     StaticLibrary('ext/extScons.c')     Program(['helloSconsForWin.c'], LIBS=['extScons'], LIBPATH='./ext')
纯粹的python语法,使用了os模块,如果你熟悉python的话,编译和链接的逻辑你可以随心所欲的写。其实这一点是最吸引我的,因为我算是个python的fan,呵呵。
本文其实只是一些关于scons的最基本的说明,在这里我也只是抛砖引玉,scons还有很多很好的特性,大家可以参考官方的文档,如果有什么新体会新发现,也别忘了留言分享下吧。http://www.scons.org/doc/production/HTML/scons-user/index.html

读书人网 >其他相关

热点推荐