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일에 확인함. 

외부 링크 편집