scons随笔
Scons是新一代的软件构件工具,或者说make工具。SCons比较特别的一点是,它的配置文件实际就是通用的python脚本,而其它make工具一般都是自定义一套私有的语言。个人感觉这既是优点又是缺点,对于已经熟悉python的人来说,这非常好,省去学习成本,但对于从未接触过python的人来说,用python做为一种make脚本,实在是过于灵活了。
SCons的设计原则
正确,这一点从使用MD5作为文件更新检查算法就可见一斑。要知道make使用的是时间戳,在没有ntp服务器的情况下,很容易出现因本地时间与服务器不同步而导致的不正常build。
高效,只能说在满足正确的前提下做到高效,毕竟python在性能上还是无法和make相比的,当然前者可以做的事情也更多。
方便,因为已经设定了一些默认的基本的原则,所以只需要编写很少的代码就可以完成一个项目的build。这一点比make是要好。当然做一个通用的makefile模板也不是什么难事。
1.安装SCons
因为SCons基于python,所以首先要安装python,本人安装的是官方推荐的python 2.5.1。SCons可以在多种OS上运行,windows的版本可以在http://www.scons.org/download.php找到。
2.hello world
用C写一个hello world, 如下
int main()
{
printf("Hello, world!\n");
}
保存文件名为hello.c,想要用scons来build这个文件,只需要,
a.在同一目录下,建立一个名为SConstruct的文件
b.在该文件中加入一行,
Program('hello.c')
如果只是想compile objects,不做link,可以改为,
Object('hello.c')
c.在当前目录下执行scons
% scons
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
cc -o hello.o -c hello.c
cc -o hello hello.o
scons: done building targets.
3.make clean
makefile的忠实用户一般都会在makefile中加入clean,作用是删除已经产生的objects,可执行文件等,scons已经内置该功能,不需要额外添加代码,执行scons –c。
% scons -c
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Cleaning targets ...
Removed hello.o
Removed hello
scons: done cleaning targets.
4. SConstruct和makefile
SConstruct和makefile有着本质的不同,但又有着惊人的相似之处。不同的是SConstruct是一个典型的python脚本,具有一切python脚本的特性;相似的是,和makefile一样都是declarative型(非imperative型)脚本,也就是说Program, Object这些定义并不立即触发编译动作。
5. build多个文件
Program(['prog.c', 'file1.c', 'file2.c'])
指定目标文件的名字为myprog,
Program('myprog', ['prog.c', 'file1.c', 'file2.c'])
注意编译多个文件和指定目标文件可能会有语义上的歧义,因此使用文件列表时要用中括号。
分享到:
相关推荐
《SCons 2.4.0 用户指南》是针对该版本SCons的官方参考资料,包含了用户手册、API文档以及帮助文档,旨在为开发者提供全面的使用指导和详细的技术信息。SCons是一个开源的构建工具,它用Python语言编写,用于自动化...
SCons用户指南 SCons是基于Python的构建工具,它可以自动完成软件的编译、链接和安装。SCons的主要特点是使用Python脚本进行构建,并且可以跨平台使用。本指南将详细介绍SCons的使用方法和配置。 一、安装SCons ...
### SCons 3.0.1 - SCons-Man:构建工具高级使用指南 #### SCons-Man 概述 SCons-Man 是针对 SCons 构建系统的一个深入的技术文档集,旨在帮助开发者更好地理解和掌握 SCons 的高级用法及功能特性。SCons 本身是一...
Python和SCons是两个在软件开发领域常用的工具。Python是一种高级编程语言,以其简洁明了的语法和强大的功能而受到广泛欢迎。SCons则是一个构建工具,它使用Python编写,用于自动化软件构建过程,替代传统的Make工具...
《使用SCons构建MDK工程:从源码到串口通信》 在嵌入式开发领域,Keil uVision(MDK)是一款广泛使用的集成开发环境,尤其在C语言编程中,它以其强大的调试功能和良好的用户体验而备受青睐。然而,当项目变得复杂时...
+scons_project_root 【src】 #源代码目录 [dir1] [dir2] [dir3] main.c 【target】 #目标输出目录 [include] [lib] [bin] 通过scons也实现这些功能。 至于scons的一些基本知识,请baidu查找,...
### SCons 3.0.1 SCons-Design 相关知识点详解 #### SCons 3.0.1 概述 SCons 是一个开源的构建工具,它使用 Python 编程语言作为其脚本语言,能够高效地管理软件项目的构建过程。版本 3.0.1 是该工具的一个特定...
SCons是一个开源的构建工具,它被设计为更加灵活的替代传统构建工具如make。SCons使用Python语言编写脚本来定义构建规则,这种方式使得构建过程中的依赖关系和构建规则更加易于编写和维护。SCons的构建脚本通常被...
《SCons指南中文翻译》是针对SCons这款构建工具的详细中文解读。SCons的显著特点在于其配置文件是用Python编程语言编写的,这与许多其他构建工具使用专有配置语言的方式不同。尽管SCons的学习曲线可能较陡,因为它...
SCons是一个强大的、开源的构建工具,它使用Python语言编写,旨在替代传统的Make工具,提供更高效、更灵活的软件构建过程。SCons的核心理念是通过脚本化的方式来管理项目构建,这使得构建过程可移植性更强,更容易...
SCons是一个开源的构建工具,主要用Python语言编写,它为软件构建过程提供了一种高效、可扩展且跨平台的解决方案。"scons-3.0.5.zip" 是这个工具的一个版本,适用于Windows操作系统。在本文中,我们将深入探讨SCons...
Python2.6与SCons1.3是两个在软件构建领域重要的工具,它们共同为开发者提供了高效、自动化和跨平台的构建解决方案。 Python2.6是Python编程语言的一个早期版本,发布于2008年。它引入了多项增强功能,如对生成器...
SCons是一个开源的构建工具,它使用Python语言编写,用于替代传统的Make或其他构建系统。它的设计目标是提供一种更高效、更易于使用的跨平台构建解决方案。SCons的名称来源于"Software Construction"的缩写,强调其...
SCons是一款强大的构建工具,广泛应用于软件开发领域,特别是C++、Python等编程语言的项目。它是一个替代传统Make工具的现代解决方案,以其易用性、可扩展性和跨平台特性而受到开发者的青睐。SCons的全称是...
**自动化编译工具SCons详解** SCons是一个开源的、基于Python的自动化构建工具,它在软件构建领域提供了一种高效、跨平台的解决方案。SCons的设计理念是简化构建过程,提高开发效率,并且能够更好地适应不断变化的...
windows上scons安装包scons-3.0.0-setup.exe,需要pc预装python2.7,点击安装scons-3.0.0-setup.exe,会搜索python2.7安装路径,默认安装到Python27\Lib\site-packages\scons-3.0.0下面
《SCons:构建自动化工具详解》 在软件开发过程中,构建工具起着至关重要的作用,它们帮助开发者自动化编译、链接、测试等繁琐任务。本文将深入探讨SCons这一强大的构建系统,它在处理项目构建时展现出高效和灵活的...
SCons是一个基于Python的软件构建工具,它提供了一种简单、灵活且可扩展的方式来自动化编译过程。与传统的构建工具如Make相比,SCons通过定义一个可配置的脚本来控制编译过程,这使得它在多平台和复杂项目构建中表现...
### SCons 用户手册知识点概述 #### 一、SCons 原理与安装 - **原理简介** - SCons 是一种构建工具,类似于传统的 Makefile 工具,但使用 Python 编写,使得配置更加灵活和易于维护。 - SCons 的核心优势在于其...
在Linux环境下,安装开源库jsoncpp时,通常会遇到依赖构建工具SCons的情况。SCons是一种基于Python的构建系统,它取代了传统的Makefile,提供了一种更灵活、跨平台的方式来构建软件项目。本篇文章将深入讲解在Linux...