首页 > 代码库 > 利用scons构建工程

利用scons构建工程

scons有很多相对于make构建系统的优秀特性,但是由于发展时间比较短现在的应用范围还是不太多,能够找到的资料也不是很多。

scons现在一大问题就是初始上手还是有点难度的,对于有python的基础的还是有点问题,毕竟他跟写成的python还是不一样的。虽然他遵循了python语言的语法,同样用python进行解析,但是我认为他只是由python进行解释,不完全等同于可执行的python。这点我相信用一用之后会有理解。

先讲一下这个构建的结构:

整个程序的组织是只有SConstruct这个文件的名字是固定的,这点和Makefile是一样的。

这个脚本就相当于makefile,这里面还可以挂接其他的python脚本进行构建的扩展,对于比较大的系统还是很有作用的。


构建步骤就是先要建立一个SConstruct文件,这个文件可以选择成为py格式这样可以方便的帮我们分析里面是不是有语法错误。

下面就要写里面的内容了,内容的组织遵循python语法。

这里给出一个最简单的编译hello.c的文件。



import os
import sys


print "call program ‘hello.c‘"




#CC = ‘arm-none-eabi-gcc‘
CPPPATH = ‘/opt/arm-2010.09/bin‘
env = Environment(CC=‘/opt/arm-2010.09/bin/arm-none-eabi-gcc‘,CCFLAGS=‘-O2‘)
#env.Append(CCFLAGS=‘-O2‘)
#env = Environment(ENV=os.environ,tools=[‘arm-none-eabi-gcc‘])
env.Program(‘src/go.c‘)
print "exit"



相信有几本的python经验的都能看懂个大概,这里就解释里面的主要函数的意义。

Environment是设置环境变量的函数,里面CC和CCFLAGS是scons的关键字  CC是编译器的路径,剩下的是编译条件的环境变量。

Program也是scons的关键字  他的作用就是设置编译的文件名和路径一边找到编译目标。

print和makefi里面echo作用一样可以帮助调试或者看到一些过程

这样一个基本的scons的构建文件就写完了,在目录下运行 scons 就可以进行编译了。

一些其他复杂的应用后续介绍。

利用scons构建工程