정적라이브러리
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 = 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 이라는 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"
외부 명령어 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')