XIVN1987 发表于 2013-2-20 17:32:52

新一代构建系统scons,,的确很简洁!!


一般在没有IDE的情况下管理C/C++工程会使用make和makefile,,

今天用了一下另一个工程代码管理系统:scons,我感觉scons相对于make较好的一点是,不需要指定文件之间的依赖关系,,从而使得编写文件SConstruct(相当于make中的makefile文件)十分简单!!!!

下面是我今天根据网上的教程写的一个例子:

import os

env = Environment(ENV=os.environ, tools=['mingw'])

src_files = Split(Glob('*.c'))
inc_paths = Split('.')
lib_files = Split('libusb')
lib_paths = Split('.')

env.StaticLibrary(target='libftdi', source=src_files, CPPPATH=inc_paths, LIBS=lib_files, LIBPATH=lib_paths)


下面说明一下:
env = Environment(ENV=os.environ, tools=['mingw'])
这一句说明使用mingw编译器

src_files = Split(Glob('*.c'))
inc_paths = Split('.')
lib_files = Split('libusb')
lib_paths = Split('.')
这几句用来指定源文件、头文件路径、库文件、库文件路径

env.StaticLibrary(target='libftdi', source=src_files, CPPPATH=inc_paths, LIBS=lib_files, LIBPATH=lib_paths)
这一句用来编译静态链接库,生成libftdi.a库文件

很容易想到,编译生成动态链接库应该是
env.SharedLibrary(target='libftdi', source=src_files, CPPPATH=inc_paths, LIBS=lib_files, LIBPATH=lib_paths)

生成可执行文件则是:
env.Program(target='ftdi', source=src_files, CPPPATH=inc_paths, LIBS=lib_files, LIBPATH=lib_paths)
这样会生成ftdi.exe可执行文件。。



虽然是初步接触,但是感觉不编写依赖规则的scons比makefile简单多了!!!!
页: [1]
查看完整版本: 新一代构建系统scons,,的确很简洁!!