맨위로가기

SCons

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

SCons는 파이썬 스크립트를 설정 파일로 사용하는 오픈 소스 소프트웨어 빌드 도구이다. 2000년 SC Build competition에서 우승한 'ScCons' 설계를 기반으로 개발되었으며, C, C++, D, Java, Fortran 등 다양한 언어 및 파일 형식을 지원한다. 자동 종속성 분석, 병렬 빌드, 캐시 공유 등의 기능을 제공하며, 리눅스, 윈도우, macOS 등 다양한 운영 체제를 지원한다. Aqsis, Blender, MongoDB 등 여러 프로젝트에서 SCons를 사용하고 있다.

더 읽어볼만한 페이지

  • 컴파일 도구 - Libtool
    Libtool은 다양한 유닉스 계열 운영 체제에서 정적 및 동적 라이브러리 생성을 관리하고, 운영 체제별 차이로 인한 소프트웨어 이식 문제를 해결하기 위해 GNU 빌드 시스템에서 사용되는 도구이다.
  • 컴파일 도구 - GNU 빌드 시스템
    GNU 빌드 시스템은 Autoconf, Automake, Libtool 등의 오토툴과 GNU make 등으로 구성되어 다양한 UNIX 시스템에서 소프트웨어 빌드 및 설치를 지원하지만, 복잡성과 이식성에 대한 비판도 존재한다.
  • 빌드 자동화 - GNU 빌드 시스템
    GNU 빌드 시스템은 Autoconf, Automake, Libtool 등의 오토툴과 GNU make 등으로 구성되어 다양한 UNIX 시스템에서 소프트웨어 빌드 및 설치를 지원하지만, 복잡성과 이식성에 대한 비판도 존재한다.
  • 빌드 자동화 - MSBuild
    MSBuild는 마이크로소프트에서 개발한 빌드 자동화 도구로서, 프로젝트 파일에 기술된 대상을 실행하여 빌드 과정을 자동화하며, Team Foundation 빌드와 연동하여 팀 빌드 환경을 구성하는 데 사용된다.
  • 파이썬 소프트웨어 - 패키지킷
    패키지킷은 다양한 리눅스 배포판에서 패키지 설치, 업데이트 및 관리를 단순화하기 위해 서로 다른 패키지 관리 시스템을 통합하여 일관된 인터페이스를 제공하는 시스템이다.
  • 파이썬 소프트웨어 - PyPy
    PyPy는 파이썬의 호환 가능하고 빠른 구현을 목표로 하는 동적 언어 구현 프레임워크이며, RPython을 사용하여 JIT 컴파일러를 생성하고, Python 2.7과 3.10 버전을 지원한다.
SCons - [IT 관련 정보]에 관한 문서
기본 정보
저자스티븐 나이트
출시일2001년 12월 13일
최신 버전4.8.1
최신 버전 출시일2024년 9월 4일
저장소SCons 깃허브 저장소
프로그래밍 언어파이썬
운영 체제크로스 플랫폼
장르소프트웨어 개발 도구
라이선스MIT 라이선스
웹사이트SCons 공식 웹사이트

2. 역사

SCons는 2000년 8월 로스앨러모스 국립 연구소가 개최한 소프트웨어 카펜트리(Software Carpentry)의 빌드 도구 경쟁[40]에서 최우수상을 받은 'ScCons'라는 설계에서 시작되었다.[4] 이 설계는 밥 사이드보텀(Bob Sidebotham)이 1999년에 (Perl)로 작성한 소프트웨어 구축 유틸리티인 '[https://archive.today/20000815211359/http://www.dsmit.com/cons/ Cons]'[3][23]에 기반을 두고 있다.

SCons는 KDE 커뮤니티에서 파생된 빌드 도구인 Waf(영어판)(한때 'SCons/BKsys'로 알려짐)의 개발에 영향을 주었다.[5][24]

2. 1. 관련 프로젝트

Waf는 SCons의 영향을 받아 KDE 커뮤니티에서 만들어낸 빌드 도구이다.[5][24] 한때 "SCons/BKsys"라는 명칭으로 불렸으며, KDE 4 및 그 이후 버전의 빌드 도구로 사용할 계획이 있었으나, 결국 CMake를 채택하면서 이 계획은 중단되었다.[5][24]

3. 주요 기능


  • 설정 파일은 파이썬 스크립트로 작성되어, 빌드 스크립트에서 완전한 범용 프로그래밍 언어의 기능을 사용할 수 있다.
  • C, C++, 포트란에 대한 자동 종속성 분석 기능이 내장되어 있다.
  • * make와 달리, 종속성 확인을 위해 "make depend"나 "make clean" 같은 별도의 명령어가 필요하지 않다.[39][22] 종속성 분석은 다른 언어나 파일 종류를 위한 사용자 정의 종속성 스캐너를 통해 쉽게 확장할 수 있다.
  • * autotools와 달리, gcc의 내장 종속성 분석을 사용하지 않고, 모든 C/C++ 소스 파일에서 "#include" 지시어를 정규 표현식으로 스캔한다. 이 방식은 gcc 이외의 컴파일러와의 호환성이 좋지만, gcc 기반 빌드에서는 추가 스캔 때문에 느릴 수 있고, 전처리기 플래그 등이 무시되어 신뢰성이 낮아질 수 있다.
  • C, C++, D, 자바, 포트란, Objective-C, Yacc, Lex, Qt, SWIGTeX, LaTeX 문서 빌드를 지원한다. 다른 언어나 파일 종류는 사용자 정의 빌더(Builder)를 통해 지원할 수 있다.
  • 소스 코드 및 미리 빌드된 대상(pre-built targets)에 대한 중앙 저장소(central repositories)에서의 빌드를 지원한다.
  • SCCS, RCS, CVS, 서브버전, 비트키퍼, 퍼포스와 같은 버전 관리 시스템에서 소스를 가져오는 기능을 지원한다.
  • 마이크로소프트 비주얼 스튜디오 .NET 및 이전 버전을 지원하며, .dsp, .dsw, .sln, .vcproj 파일 생성이 가능하다.
  • 파일 내용의 변경을 감지하는 데 기본적으로 MD5 시그니처를 사용하며, 옵션으로 전통적인 타임스탬프 방식도 지원한다.
  • 디렉터리 구조와 관계없이 지정된 수의 작업을 동시에 실행하는 병렬 빌드를 지원한다.
  • `#include` 파일, 라이브러리, 함수, `typedef` 등을 탐색하는 Autoconf와 유사한 통합 기능을 지원한다.
  • 모든 종속성을 전역적으로 파악하므로, 여러 번의 빌드 패스나 타겟 순서 재지정이 필요하지 않다.
  • 빌드 결과물을 캐시하여 공유함으로써 반복적인 빌드 속도를 높일 수 있다. 이는 ccache와 유사하지만 C/C++ 컴파일뿐만 아니라 다른 모든 종류의 파일에도 적용된다.
  • 처음부터 크로스 플랫폼 빌드를 염두에 두고 설계되었다. 리눅스, 기타 POSIX 호환 운영 체제(AIX, BSD 시스템, HP-UX, IRIX, 솔라리스), macOS, 윈도우 NT 계열, OS/2를 지원한다.

4. SConstruct 파일 예시

`SConstruct` 파일은 SCons가 빌드 작업을 수행하는 방법을 정의하는 파이썬 스크립트 파일이다. 사용자가 'scons' 명령을 실행하면, SCons는 현재 디렉토리나 상위 디렉토리에서 `SConstruct` 파일을 찾아 그 내용을 실행하여 프로젝트를 빌드한다. 이 파일에는 어떤 소스 파일을 컴파일하고, 어떤 라이브러리를 링크하며, 최종적으로 어떤 실행 파일이나 라이브러리를 생성할지 등의 빌드 규칙이 명시된다.

아래는 `SConstruct` 파일을 작성하는 몇 가지 기본적인 예시이다. 더 자세한 내용은 각 하위 섹션에서 확인할 수 있다.

4. 1. 가장 단순한 SConstruct 파일

다음은 가장 단순한 형태의 `SConstruct` 파일 예시이다.



Program('main.c')



사용자가 'scons' 명령을 실행하면, SCons는 이 `SConstruct` 파일을 읽어 'main' 실행 파일(유닉스 호환 OS) 또는 'main.exe' 실행 파일(윈도우)을 빌드한다.

4. 2. 두 개의 소스 파일을 포함하고 빌드 도구 옵션을 지정하는 프로젝트의 SConstruct 파일

다음은 두 개의 소스 파일을 포함하고 빌드 도구 옵션을 지정하는 프로젝트의 `SConstruct` 파일이다.



env = Environment()

env.Append(CPPFLAGS=["-Wall", "-g"])

env.Program("hello",

["hello.c", "main.c"])


5. 주요 응용 프로젝트 목록

참조

[1] 웹사이트 SCons Design and Implementation http://legacy.python[...] 2002-02
[2] 웹사이트 Archives - SCons https://scons.org/ar[...]
[3] 웹사이트 Cons http://www.dsmit.com[...] DSMit
[4] 웹사이트 Software Carpentry Design Competition Second Round Results Config, Build, and Track categories https://lwn.net/2000[...] 2012-10-29
[5] 웹사이트 Why the KDE project switched to CMake – and how (continued) https://lwn.net/Arti[...] LWN 2009-07-21
[6] 웹사이트 CompilingWesnoth http://wiki.wesnoth.[...] Wesnoth 2011-04-11
[7] 웹사이트 README.txt https://github.com/i[...] id Software 2015-05-13
[8] 웹사이트 Downloads http://www.fceux.com[...] FCEUX 2017-04-25
[9] 웹사이트 Gem5 http://www.gem5.org/
[10] 웹사이트 SCons is full of win today http://esr.ibiblio.o[...] iBiblio 2011-04-11
[11] 웹사이트 Developer documentation for GtkRadiant 1.6.0 (Zeroradiant) http://www.qeradiant[...] QE radiant 2009-12-28
[12] 웹사이트 Installation http://www.ahay.org/[...] Ahay 2011-04-11
[13] 웹사이트 Mixxx/Compiling https://github.com/m[...] 2014-08-26
[14] 웹사이트 Building for Linux http://www.mongodb.o[...] 10gen 2011-02-08
[15] source code INSTALL http://nsis.svn.sour[...] Source forge 2011-04-11
[16] 웹사이트 /SConstruct - OpenNebula - OpenNebula Development pages http://dev.opennebul[...] OpenNebula Project 2016-01-09
[17] 웹사이트 README.txt https://github.com/i[...] id Software 2017-04-25
[18] 웹사이트 Modular Controller Architecture http://mca2.org/ Research Center for Information Technology (FZI), Karlsruhe Institute of Technology (KIT)
[19] 웹사이트 openpilot Github repository https://github.com/c[...] 2021-05-10
[20] 웹사이트 Introduction to the buildsystem — Godot Engine latest documentation https://docs.godoten[...] 2019-08-19
[21] 문서 SCons 4.8.1 is available - SCons https://scons.org/sc[...]
[22] 문서 "多くの場合 \"depend\" や \"clean\" のターゲットは autotools が生成するか、ユーザーが自前で書く。make は単にそれを実行するツールである。"
[23] 문서 Cons http://www.dsmit.com[...]
[24] 뉴스 Why the KDE project switched to CMake -- and how (continued) http://lwn.net/Artic[...] LWN.net
[25] 웹사이트 CompilingWesnoth http://wiki.wesnoth.[...] Wesnoth 2011-04-11
[26] 웹사이트 Building Csound http://csounds.com/m[...] C sounds 2011-04-11
[27] 웹사이트 README.txt https://github.com/i[...] id Software 2015-05-13
[28] 웹사이트 Gem5 http://www.gem5.org/
[29] 웹사이트 SCons is full of win today http://esr.ibiblio.o[...] iBiblio 2011-04-11
[30] 웹사이트 Developer documentation for GtkRadiant 1.6.0 (Zeroradiant) http://www.qeradiant[...] QE radiant 2009-12-28
[31] 웹사이트 Installation http://www.ahay.org/[...] Ahay 2011-04-11
[32] 웹사이트 Mixxx/Compiling https://github.com/m[...] 2015-07-17
[33] 웹사이트 Building for Linux http://www.mongodb.o[...] 10gen 2011-02-08
[34] source code INSTALL http://nsis.svn.sour[...] Source forge 2011-04-11
[35] 웹사이트 Open Source Routing Machine http://project-osrm.[...] 2012-05-29
[36] 웹사이트 How to Download and Build V8 https://code.google.[...] Google 2011-07-05
[37] 웹사이트 Modular Controller Architecture http://mca2.org/ Research Center for Information Technology (FZI), Karlsruhe Institute of Technology (KIT) 2015-07-17
[38] 웹사이트 Godot Docs ビルドシステムの説明 https://docs.godoten[...] 2020-10-16
[39] 문서
[40] 웹인용 Software Carpentry http://software-carp[...] 2008-11-11



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com