[wiki:../ 상위 섹션으로 가기] SCons - A Software Construction Tool -- [김도집] [[DateTime(2005-11-02T00:50:50)]] [[TableOfContents]] = SCons = Python 스크립트를 이용하는 소프트웨어 빌드를 위한 도구이다. 이는 make를 완전 대체한다. 개인의 취향에 따라 다르겠지만 나 개인적인 사용 소감은 make 보다 더 사용이 편리한 듯 싶다. == 간단한 빌드 == === 간단한 C/C++ 실행파일 빌드 === {{{hello.c}}}라는 파일명으로 다음 소스 코드를 작성한다. {{{#!vim c int main(void) { printf("hello world\n"); return 0; } }}} {{{SConstruct}}}라는 파일명으로 다음 내용을 작성한다. {{{ Program('hello.c') }}} 이제 쉘에서 {{{scons}}}를 실행하면 다음과 같은 결과 메시지가 출력될 것이다. {{{ $ scons scons: Reading SConscript files ... scons: done reading SConscript files. scons: Building targets ... gcc -c -o hello.o hello.c gcc -o hello hello.o scons: done building targets. }}} 아주 간단하게 {{{hello}}}라는 실행파일을 빌드 하는데 성공했다. ^^ === 간단한 오브젝트 빌드 === {{{SConstruct}}} 파일 내용에 {{{Program}}} 대신 {{{Object}}}를 사용한다. === 빌드 후 클린 업 === {{{scons -c}}}를 실행한다. === Verbose를 적게... === {{{scons -Q}}}를 실행한다. === scons의 특징들 === * {{{SConstruct}}} 는 Python 스크립트이다. * scons는 순차적으로 실행되지 않는다. == 좀 더 알아보는 간단한 빌드 == 여러 개의 소스 파일이 있을 때는 어떻게 빌드할까? {{{#!vim python common = ['common1.c', 'common2.c'] foo_files = ['foo.c'] + common bar_files = ['bar1.c', 'bar2.c'] + common Program('foo', foo_files) Program('bar', bar-files) }}} 위에서 common은 {{{Split()}}} 메쏘드 method를 이용해서도 표현할 수 있다. {{{#!vim python common = Spilt('common1.c common2.c') }}} == Construction Environments == 빌드 시 사용할 환경 값을 변경할 수 있다. {{{SConstruct}}} 파일의 내용이다. {{{#!vim python env = Environment(CC = 'gcc', CCFLAGS = '-O2') env.Program('hello.c') }}} 다음은 실행 결과이다. {{{ $ scons -Q gcc -O2 -c -o hello.o hello.c gcc -o hello hello.o }}} /!\ 주의할 점은 make에서 사용하는 CFLAGS가 아니라 '''{{{CCFLAGS}}}'''이다. = Trackback = [[comment]]