1. 목적
ㄱ. CMake가 무엇인지 알아보자.(Learn What is CMake.)
ㄴ. CMake의 사용법을 알아보자. (Let's learn how to use CMake.)
ㄷ. U-Boot에 lthor를 패치해보자.(Patch lthor to Odroid U-Boot.)
2. 본론
ㄱ. CMake란 무엇인가??(What is CMake?)
a. CMake(Cross Platform Make)는 멀티 플랫폼으로 사용할 수 있는 Make의 대용품을 만들기 위한 오픈소스 프로젝트로 키트웨어와 인사이트 콘솔티엄에서 만들었다. 스스로 기존의 Make의 과정을 수행하지는 않고 지정한 운영체제에 맞는 Make 파일(마이크로소프트 윈도에서는 솔루션 파일)의 생성만을 수행하기 때문에 Meta Make라고도 불린다.
※ 가장 큰 이점은 유닉스 계열의 OS 중심이던 기존의 Make와 달리 한번 작성해 두면 유닉스 계열은 물론, 윈도 계열의 프로그래밍 도구도 지원한다.
여기서 여러 빌드 도구를 살펴보자면
- GNU build system(주로 autotools라고 부름 / 소스 코드 패키지를 수많은 유닉스 계열 운영 체제로 포팅할 수 있게 도와 주는 프로그래밍 도구 제품군이다. / 위키 링크)
- Waf(콘피규어링을 위한 파이선 기반의 프레임워크로 어플리케이션의 컴파일과 인스톨을 수행한다. / Waf is a Python-based framework for configuring, compiling and installing applications. Here are perhaps the most important features of Waf / 와프 링크)
- SCons[오픈 소스 소프트웨어 빌드 도구. SCons는 autoconf/automake의 기능과 ccache(ccache는 사용자 디렉토리에 .ccache라는 폴더를 생성하여 object 파일을 해싱하여 저장 - preprocessor를 거친 소스코드를 해슁하여 해당 키와 겹치는 object코드가 있으면 컴파일 하지 않고 해당 object를 그냥 반환함.) 와 같은 컴파일러 캐시를 통합한, 고전적인 Make 유틸리티의 대체품이다. 이전의 도구들과 비교하여, SCons는 더 쓰기 쉽고, 더 신뢰할 수 있고, 더 빠른 것을 목표로 한다. / 위키 링크]
b. CMake도 위와 유사한 빌드 도구 중 하나입니다.
CMake는 여러가지 이점이 있습니다.
예를 들자면 KDE(다양한 운영체제에서 구동 가능한 프로그램들을 제작하는 다국적 자유 소프트웨어 커뮤니티)가 SCons 에서 CMake로 빌드 툴을 변경했는데 그 이유를 다음과 같이 서술 하고 있습니다.
- 이점(Pros / advantages)
1. CMake는 KDE의 빌드에 없었던 여러가지 향상된 부분들을 제공한다.
2. 이것은 마치 프레임워크처럼 완전한 작업 설정을 지원한다, 이로써 쓰기가 쉽다.
3. 나(Peter Linnell)는 대부분의 kdelibs(The KDE Library API Reference / KDE3)를 관리했다.
4. CMake는 C++ 컴파일러를 제외하고 다른 위존성이 없다.
5. CMake는 기본적인 모든 UNIX, MS Windows(MSVS, Borland, cygwin, mingw)와 Mac OS X를 지원한다.
6. CMake는 KDevelop3, MSVC 6, 7, XCode를 위한 Makefile들과 프로젝트들을 생성할 수 있다.
7. CMake는 단순한 구문을 가지고 있다.
8. 이것은 테스팅 프레임워크의 특징들이다.
9. 이것은 compiling libs, apps, KDE kparts, KDE ioslaves, KDE loadable modules, -enable-final, la-file generation을 지원한다.
10. Makefile을 CMake 파일로 90변환을 지원하는 루비 스크립트로 작성된 am2cmake가 있다.
- 단점(Cons / disadvantages)
1. 파일 설치 작업을 위한 CMake 커맨드는 강력하지 않다, 하지만 KDE를 지원하기 위해 고쳐질 수 있다는 것을 개발자들은 안다.
2. 설치중에 relinking이 확실하지 않다.
3. 진행 상황 %가 나오지 않는다 : 이것은 CMake에선 완성될 수 없다, CMake는 자체로 빌드 시스템이 아니기 때문, 이것은 단지 native buildsystem을 위한 입력 파일들을 생성한다.
c. 이런 장단점으로 인해서 CMake를 사용한다고 합니다.
3. 결론
ㄱ. CMake는 멀티 플랫폼을 위한 빌드 지원 시스템이며 사용이 쉽고 관리하기 편하다.
- 참고 사항
http://lwn.net/Articles/188693/
http://bunhere.tistory.com/256
http://ko.wikipedia.org/wiki/KDE
http://en.wikipedia.org/wiki/Decision_making
http://ko.wikipedia.org/wiki/CMake
'시스템 > 리눅스 시스템' 카테고리의 다른 글
#궁금? | 리눅스 u-boot DTB 파일이란 무엇인가?(What is DTB [Device Tree Blob (Flat Device Tree)]) (0) | 2014.06.26 |
---|---|
#1 리눅스 시스템 부팅의 이해 : /sbin/init 프로그램 (0) | 2014.06.06 |