====== 윈도에서 scons 설치하기 ======
*파이썬 2.6.x설치
*[[http://sourceforge.net/projects/scons/files/scons/1.2.0/scons-1.2.0.win32.exe/download|윈도용 scons]] 다운로드 -> 설치
*제어판->시스템->고급->환경변수->PATH에서 편집 ;C:\Python26\Scripts 추가
====== basic ======
정적라이브러리
StaticLibrary(’foo’, [’f1.c’, ’f2.c’, ’f3.c’])
동적라이브러리
SharedLibrary(’foo’, [’f1.c’, ’f2.c’, ’f3.c’])
라이브러리와 링크
Library('foo', ['f1.c', 'f2.c', 'f3.c'])
Program('prog.c', LIBS=['foo', 'bar'], LIBPATH='.')
Program('prog.c', LIBS = 'm', LIBPATH = ['/usr/lib', '/usr/local/lib'])
====== env ======
env = Environment(FOO = 'foo', BAR = 'bar')
dict = env.Dictionary()
for key in ['OBJSUFFIX', 'LIBSUFFIX', 'PROGSUFFIX']:
print "key = %s, value = %s" % (key, dict[key])
opt = Environment(CCFLAGS = '-O2')
dbg = Environment(CCFLAGS = '-g')
o = opt.Object('foo-opt', 'foo.c')
opt.Program(o)
d = dbg.Object('foo-dbg', 'foo.c')
dbg.Program(d)
환경 추가
env.Append(CCFLAGS = "-g" )
env.Append(LINKFLAGS = "-Xlinker -Map=output.map")
====== install ======
install 이라는 alias를 생성
env = Environment()
hello = env.Program('hello.c')
env.Install('/usr/bin', hello)
env.Alias('install', ’/usr/bin’)
실행하면 요래
% scons -Q
cc -o hello.o -c hello.c
cc -o hello hello.o
% scons -Q install
Install file: "hello" as "/usr/bin/hello"
====== custom builder ======
외부 명령어 foobuild를 쓸 때
bld = Builder(action = 'foobuild < $SOURCE > $TARGET', suffix = '.foo', src_suffix = '.input')
env = Environment(BUILDERS = {'Foo' : bld})
env.Foo('file1')
env.Foo('file2')
파이썬 코드를 쓸 때
def build_function(target, source, env):
# Code to build "target" from "source"
return None
bld = Builder(action = build_function, suffix = '.foo', src_suffix = '.input')
env = Environment(BUILDERS = {'Foo' : bld})
env.Foo('file')
====== references ======
*[[http://www.scons.org/|scons]] official home
*[[http://www.doyub.com/blog/tag/SCons|scons tutorial]] in Doyub Kim's blog
*[[http://quirkygba.blogspot.com/2008/10/alternatives-to-make-part-ii.html|Alternatives to Make, Part II] scons with arm-tool-chain]]