{{위키데이터 속성 추적}}
{{소프트웨어 정보 |
  이름 = SCons |
  로고  SCons.png |
  개발자 = Steven Knight |
  최근 버전 = 4.2.0 |
  최근 버전 출시일 = 2021년 7월 31일 |
  운영체제 = [[마이크로소프트 윈도우|윈도우]], [[POSIX]] 호환 운영 체제|
  종류 = [[프로그래밍 도구]] |
  라이선스 = [[MIT 라이선스]] |
  웹사이트 = [http://www.scons.org/ www.scons.org] |
}}

'''SCons'''는 [[오픈 소스]] 소프트웨어 빌드 도구이다. SCons는 [[autoconf]]/[[automake]]의 기능과 [[ccache]]와 같은 컴파일러 캐시를 통합한, 고전적인 [[make (소프트웨어)|Make]] 유틸리티의 대체품이다. 이전의 도구들과 비교하여, SCons는 더 쓰기 쉽고, 더 신뢰할 수 있고, 더 빠른 것을 목표로 한다.

== 주요 기능 ==
* 설정 파일이 [[파이썬]] 스크립트이다: 사용자가 작성한 빌드 스크립트에 완전한 범용 프로그래밍 언어의 기능을 사용할 수 있다.
* [[C 프로그래밍 언어|C]], [[C++]]과 [[포트란]]에 대해, 자동 [[종속성 (컴퓨터 과학)|종속성]] 분석(Automatic dependency analysis)이 내장되어 있다.
** make와 달리, 종속성을 획득하기 위한 "<code>make depend</code>"나 "<code>make clean</code>"<ref name=autotools_note>대부분의 경우, "<code>depend</code>"와 "<code>clean</code>" 타겟은 사용자가 작성하거나 [[autotools]]에 의해 생성되어야 한다. Make는 단지 이 타겟들을 실행하는 도구일 뿐이다.</ref>과 같은 별도의 명령어는 필요하지 않다. 종속성 분석(Dependency analysis)은 다른 언어나 파일 종류를 위한 사용자 정의 종속성 스캐너를 통해 쉽게 확장할 수 있다.
** [[GNU 빌드 시스템|autotools]]와 달리, [[GNU 컴파일러 모음|gcc]]의 내장 종속성 분석을 사용하지 않는다. 그 대신, "<code>#include</code>"에 대한 [[정규 표현식|regexp]] 스캔을 모든 C/C++ 소스 파일에 행한다. gcc 기반 빌드에서는, 종속성 생성이 더 느려질 수 있고(추가적인 스캔이 언제나 필요하므로). 신뢰성이 더 낮아질 수 있다(<code>-DSOMETHING</code>와 같은 전처리기 플래그 같은 것이 무시된다는 의미에서). 그러나 이것은 비-gcc 컴파일러에 호환성이 더 좋은 방식이다.
* [[C 프로그래밍 언어|C]], [[C++]], [[D 프로그래밍 언어|D]], [[자바 (프로그래밍 언어)|자바]], [[포트란|Fortran]], [[Objective-C]], [[Yacc]], [[Lex 프로그래밍 언어|Lex]], [[Qt (툴킷)|Qt]]과 [[SWIG]]와 [[TeX]] 및 [[LaTeX]] 문서 빌드를 기본 지원한다. 다른 언어나 파일 종류는 사용자 정의 빌더(Builder)를 통해 지원할 수 있다.
* 소스 코드 및 빌드 전 대상(pre-built targets)에 대한 중심 저장소(central repositories)에서의 빌드를 지원한다.
* [[SCCS]], [[RCS]](Revision Control System), [[CVS]](Concurrent Versions System), [[서브버전]], [[비트키퍼]]와 [[퍼포스]](Perforce)에서 소스를 가져오는 것을 기본 지원한다.
* .dsp, .dsw, .sln와 .vcproj 파일의 생성을 포함한 [[마이크로소프트 비주얼 스튜디오|마이크로소프트 비주얼 스튜디오 .NET]]와 이전의 비주얼 스튜디오 버전을 기본 지원한다.
* 파일 내용 변화 감지에 [[MD5]] 시그너처를 사용한다: 옵션 설정으로, 전통적인 타임스탬프(timestamps) 방식도 지원한다.
* 디렉터리 체계와 관계없이 지정한 작업들(jobs)의 수를 유지하는 병렬 빌드를 지원한다.
* <code>#include</code> 파일과 라이브러리, 함수와 <code>typedef</code>들을 탐색하는 통합된 [[Autoconf]]와 유사한 기능을 지원한다.
* 모든 종속성을 전역적으로 조망한다: 복수의 빌드 패스나 타겟 순서 재지정이 필요하지 않다.
* 다중 빌드를 가속하기 위한 캐시 파일을 공유하는 능력이 있다: [[ccache]]와 유사하지만 C/C++ 컴파일 뿐만 아니라, 다른 모든 파일 종류를 지원한다.
* 크로스 플랫폼 빌드(cross-platform builds)를 위해 처음부터 차례로 끝까지 다시 설계했다: [[리눅스]], 다른 [[POSIX]] 호환 운영 체제([[AIX (운영 체제)|AIX]], [[BSD/OS|*BSD systems]], [[HP-UX]], [[IRIX]]와 [[솔라리스 (운영 체제)|솔라리스]], [[Mac OS X]]), [[마이크로소프트 윈도우|윈도우]]와 [[OS/2]]를 지원한다.

== 가장 단순한 SConstruct 파일 ==
<syntaxhighlight lang="python">
 Program('main.c')
</syntaxhighlight>
사용자가 '<code>scons</code>' 명령을 실행하면, scons는 'main' 실행 파일 ([[유닉스]] 호환 OS에서) 또는 'main.exe' 실행 파일 ([[마이크로소프트 윈도우|윈도우]]에서)을 빌드한다.

== 역사 ==
SCons는 2000년 8월의 SC<ref>{{웹 인용 |url=http://software-carpentry.codesourcery.com/ |제목=Software Carpentry |확인날짜=2008년 11월 11일 |보존url=https://web.archive.org/web/20130812171732/http://software-carpentry.codesourcery.com/ |보존날짜=2013년 8월 12일 |url-status=dead }}</ref> Build competition에서의 최우수상을 받은 'ScCons'라는 빌드 도구 설계에서 시작했다. 이 설계는 [https://archive.today/20000815211359/http://www.dsmit.com/cons/ Cons] 라는 빌드 도구에 기반한 것이었다.

== 주요 응용 프로젝트 목록 ==
* [[:en:Aqsis|Aqsis (3D 그래픽스)]]
* [[:en:Ardour (audio processor)|Ardour (audio processor)]]
* [[:en:Battlefield 1942|배틀필드 1942]]
* [[블렌더 (소프트웨어)|블렌더 (3D 그래픽스)]]
* [[:en:Delta3D|Delta3D (게임 엔진)]]
* [[이드 소프트웨어|id Software]]
* [[:en:Nullsoft Scriptable Install System|Nullsoft Scriptable Install System]]
* [[:en:SuperCollider|SuperCollider (Audio programming language and environment)]]
* [[VMware]]
* [[:en:Csound5|Csound5]]

== 같이 보기 ==
* [[CMake]]
* [[Qmake]]
* [[Waf]]
== 각주 ==
<references />

== 외부 링크 ==
* [http://www.scons.org/ SCons 홈페이지]
* [https://web.archive.org/web/20080513113324/http://freshmeat.net/articles/view/1715/ Make Alternatives]
* [https://web.archive.org/web/20080511200201/http://freshmeat.net/articles/view/889/ Stop the autoconf insanity! Why we need a new build system.]

[[분류:컴파일 도구]]
[[분류:빌드 자동화]]
[[분류:파이썬 소프트웨어]]
[[분류:파이썬으로 작성된 자유 소프트웨어]]
[[분류:MIT 라이선스 소프트웨어]]