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

SCons
개발자Steven Knight
안정화 버전
4.2.0 / 2021년 7월 31일
저장소
운영 체제윈도우, POSIX 호환 운영 체제
종류프로그래밍 도구
라이선스MIT 라이선스
웹사이트www.scons.org

주요 기능

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

가장 단순한 SConstruct 파일

편집
 Program('main.c')

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

역사

편집

SCons는 2000년 8월의 SC[2] Build competition에서의 최우수상을 받은 'ScCons'라는 빌드 도구 설계에서 시작했다. 이 설계는 Cons 라는 빌드 도구에 기반한 것이었다.

주요 응용 프로젝트 목록

편집

같이 보기

편집

각주

편집
  1. 대부분의 경우, "depend"와 "clean" 타겟은 사용자가 작성하거나 autotools에 의해 생성되어야 한다. Make는 단지 이 타겟들을 실행하는 도구일 뿐이다.
  2. “Software Carpentry”. 2013년 8월 12일에 원본 문서에서 보존된 문서. 2008년 11월 11일에 확인함. 

외부 링크

편집