본문 바로가기

Application Dev./Tip/App/Util

CMake the cross-platform, open-source build system

[출처] CMake|작성자 아미

오픈소스와 멀티 플랫폼 지원 이슈에 관심을 가지게 되면서, 자연스럽게 이런 저런 툴들을 새로 접하게 되는데, 그 중 최근에 접한 가장 강력한 툴은 바로 CMake다.

 

기존 프로젝트 구성은 특정 IDE나 특정 빌드 도구에 한정되어 하나의 형식으로 한정되게 되는데 (예:Visual Studio의 sln/vcproj를 다른 플랫폼에서 바로 빌드할 수 없음 ), 이런 문제점을 CMake를 통해 해결할 수 있다.

 

문법은 XML이 아닌 Makefile이나 ini와 같은 지나치게 오래된 방식이라 좀 불편한 점이 있고, 키워드의 단/복수 문법 또한 일관성이 없다. 게다가 버전별 호환성도 보장받을 수 없고... 이렇게 보면 나쁜 듯 하지만, 일단 CMake를 통해 프로젝트 설정을 한 번 구성해두면, 다양한 빌드 도구에 대한 프로젝트 설정을 생성할 수 있다는 점은 무척 매력적이다.

 

이를테면, Windows 기반 게임을 만드는 우리 회사 같은 경우, Visual Studio(이하VS)에 대한 의존성이 높아, 대체로 sln/vcproj 파일을 쓰는데, VS 2003버전에서 만든 sln/vcproj 파일은 VS 2008이나 2005에서 열면 변환을 통해 사용이 가능한데 비해, 상위 버전에서 만든 파일은 하위 버전에서 아예 사용할 수 없다. 게다가 2005, 2008, 최근에는 2010까지도 나오는 듯 한데, 이 모든 버전을 위해 프로젝트 설정을 공급하는 것도 꽤나 귀찮은 일. 멀티 플랫폼 이슈를 포함하면 Makefile도 지원해야 하고 XCode를 위한 설정까지도... 엄청나게 많아지게 된다.

 

이 때 CMake를 통해 필요한 때에 원하는 형태의 프로젝트 설정을 만들어낼 수 있으니, 이보다 편리할 수는 없을 정도다. 물론 CMake도 많은 플랫폼을 지원한다. 그 중 MAC OS X, Windows, Linux 용을 사용해서 직접 만든 라이브러리의 프로젝트 설정을 만들어 사용해보았는데, 결과는 대 만족. 아주 훌륭하게 동작해주었다.

 

( 더불어 CMake덕분에 VS에서도 NMake라는 command line build tool이 있다는 것을 알게 되었다. 개발 파이프라인 구성에 꼭 필요한 요소가 아닐 수 없으니 관심있는 분들은 NMake를 검색해보세요.




TagLib 개발자가 리눅스쪽 개발자라네요...
다 괜찮은데 #include 구문의 경로문제들이... 파일이 한두개여야 수작업을 하지;;
쨋든 이런 프로그램을 찾아서 다행,
관련 링크 : http://www.cmake.org/cmake/resources/software.html