SCons
1. 개요
SCons는 파이썬 스크립트를 설정 파일로 사용하는 오픈 소스 소프트웨어 빌드 도구이다. 2000년 SC Build competition에서 우승한 'ScCons' 설계를 기반으로 개발되었으며, C, C++, D, Java, Fortran 등 다양한 언어 및 파일 형식을 지원한다. 자동 종속성 분석, 병렬 빌드, 캐시 공유 등의 기능을 제공하며, 리눅스, 윈도우, macOS 등 다양한 운영 체제를 지원한다. Aqsis, Blender, MongoDB 등 여러 프로젝트에서 SCons를 사용하고 있다.
이미지 준비중입니다.
| 저자 | 스티븐 나이트 |
|---|---|
| 출시일 | 2001년 12월 13일 |
| 최신 버전 | 4.8.1 |
| 최신 버전 출시일 | 2024년 9월 4일 |
| 저장소 | SCons 깃허브 저장소 |
| 프로그래밍 언어 | 파이썬 |
| 운영 체제 | 크로스 플랫폼 |
| 장르 | 소프트웨어 개발 도구 |
| 라이선스 | MIT 라이선스 |
| 웹사이트 | SCons 공식 웹사이트 |
-
파이썬 소프트웨어 -
패키지킷
패키지킷은 다양한 리눅스 배포판에서 패키지 설치, 업데이트 및 관리를 단순화하기 위해 서로 다른 패키지 관리 시스템을 통합하여 일관된 인터페이스를 제공하는 시스템이다. -
파이썬 소프트웨어 -
PyPy
PyPy는 파이썬의 호환 가능하고 빠른 구현을 목표로 하는 동적 언어 구현 프레임워크이며, RPython을 사용하여 JIT 컴파일러를 생성하고, Python 2.7과 3.10 버전을 지원한다. -
MIT 라이선스 소프트웨어 -
MS-DOS
MS-DOS는 마이크로소프트가 개발한 개인용 컴퓨터용 디스크 운영 체제로, IBM PC의 표준 운영 체제로 널리 사용되었으며, 단일 작업 환경과 명령줄 인터페이스를 특징으로 한다. -
MIT 라이선스 소프트웨어 -
Zcash
Zcash는 존스 홉킨스 대학교 연구를 기반으로 개발된 익명성 강화 암호화폐로, zk-SNARK 영지식 증명을 통해 거래 당사자의 익명성을 보장하지만, 범죄 악용 우려와 규제 대상 가능성이 존재한다. -
파이썬으로 작성된 자유 소프트웨어 -
캘리버
캘리버는 다양한 전자책 파일 형식과 단말기를 지원하는 오픈소스 소프트웨어로, 편집, 변환, 메타데이터 관리, 라이브러리 검색, 온라인 콘텐츠 수집, 원격 액세스, 전자책 제작 등의 기능을 제공하며, 플러그인을 통해 DRM 제거도 가능하다. -
파이썬으로 작성된 자유 소프트웨어 -
클램윈
클램윈은 ClamAV 엔진 기반의 오픈 소스 백신 소프트웨어로, 트로이 목마, 바이러스, 멀웨어 등 다양한 악성 위협 분석 자료를 제공하며 예약 검사, 수동 검사, 컨텍스트 메뉴 통합 등의 기능을 지원하지만 실시간 감시 기능은 제공하지 않는다.
2. 역사
SCons는 2000년 8월 로스앨러모스 국립 연구소가 개최한 소프트웨어 카펜트리(Software Carpentry)의 빌드 도구 경쟁에서 최우수상을 받은 'ScCons'라는 설계에서 시작되었다. 이 설계는 밥 사이드보텀(Bob Sidebotham)이 1999년에 펄(Perl)로 작성한 소프트웨어 구축 유틸리티인 '[https://archive.today/20000815211359/http://www.dsmit.com/cons/ Cons]'에 기반을 두고 있다.
SCons는 KDE 커뮤니티에서 파생된 빌드 도구인 Waf(영어판)(한때 'SCons/BKsys'로 알려짐)의 개발에 영향을 주었다.
2.1. 관련 프로젝트
Waf는 SCons의 영향을 받아 KDE 커뮤니티에서 만들어낸 빌드 도구이다. 한때 "SCons/BKsys"라는 명칭으로 불렸으며, KDE 4 및 그 이후 버전의 빌드 도구로 사용할 계획이 있었으나, 결국 CMake를 채택하면서 이 계획은 중단되었다.
3. 주요 기능
* 설정 파일은 파이썬 스크립트로 작성되어, 빌드 스크립트에서 완전한 범용 프로그래밍 언어의 기능을 사용할 수 있다.
* C, C++, 포트란에 대한 자동 종속성 분석 기능이 내장되어 있다.
make와 달리, 종속성 확인을 위해 "make depend"나 "make clean" 같은 별도의 명령어가 필요하지 않다. 종속성 분석은 다른 언어나 파일 종류를 위한 사용자 정의 종속성 스캐너를 통해 쉽게 확장할 수 있다.
autotools와 달리, gcc의 내장 종속성 분석을 사용하지 않고, 모든 C/C++ 소스 파일에서 "#include" 지시어를 정규 표현식으로 스캔한다. 이 방식은 gcc 이외의 컴파일러와의 호환성이 좋지만, gcc 기반 빌드에서는 추가 스캔 때문에 느릴 수 있고, 전처리기 플래그 등이 무시되어 신뢰성이 낮아질 수 있다.
* C, C++, D, 자바, 포트란, Objective-C, Yacc, Lex, Qt, SWIG 및 TeX, 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"])