본문 바로가기
IT,과학/IT용어풀이

[IT 용어 풀이] CMake

by 오우너 2018. 5. 5.
728x90
반응형

[IT 용어 풀이]

CMake

CMake는 운영 체제에서 빌드 프로세스를 컴파일러에 독립적으로 관리하는 확장 가능한 오픈 소스 시스템입니다. 많은 교차 플랫폼 시스템과 달리 CMake는 기본 빌드 환경과 함께 사용하도록 설계되었습니다. 각 원본 디렉터리(CMakeLists.txt파일이라고 함)에 있는 단순 구성 파일은 Unix에서 표준 빌드 파일(예:Windows에서 일반적으로 사용되는 작업 공간)을 생성하는 데 사용됩니다. CMake는 소스 코드를 컴파일하고, 라이브러리를 생성하고, 포장지를 생성하고, 임의 조합으로 실행 파일을 작성하는 기본 빌드 환경을 생성할 수 있습니다. CMake는 내부 및 외부 빌드를 지원하므로 단일 소스 트리에서 여러 빌드를 지원할 수 있습니다. CMake는 정적 및 동적 라이브러리 빌드도 지원합니다. CMake의 또 다른 장점은 그래픽 편집기에서 사용하도록 설계된 캐시 파일을 생성한다는 것입니다. 예를 들어 CMake가 실행될 때 파일, 라이브러리 및 실행 파일을 찾으며 선택적 빌드 명령이 발생할 수 있습니다. 이 정보는 캐시에 수집되며, 이 정보는 기본 빌드 파일을 생성하기 전에 사용자가 변경할 수 있습니다.
CMake는 여러 라이브러리에 종속된 복잡한 디렉토리 계층 구조와 응용 프로그램을 지원하도록 설계되었습니다. 예를 들어 CMake는 각 툴킷에 여러 디렉토리가 포함될 수 있는 다중 툴킷(즉, 라이브러리)으로 구성된 프로젝트를 지원하며 응용 프로그램은 툴킷과 추가 코드에 따라 달라집니다. 또한 CMake는 컴파일되어 최종 응용 프로그램에 연결되는 코드를 생성하기 위해 실행 파일을 빌드 해야 하는 상황을 처리할 수 있습니다. CMake는 오픈 소스이며 간단하고 확장 가능한 설계를 가지고 있기 때문에 새로운 기능을 지원하기 위해 필요에 따라 CMake를 확장할 수 있습니다. CMake사용은 간단합니다. 빌드 프로세스는 프로젝트를 구성하는 각 디렉터리(하위 디렉터리 포함)에 CMakeLists.txt파일을 하나 이상 생성하여 제어합니다. 각 CMakeLists.txt는 하나 이상의 명령으로 구성됩니다. 각 명령에는 COMMAND(args…)형식이 있습니다. 여기서 COMMAND는 명령 이름이고 args는 공백으로 구분된 인수 목록입니다. CMake는 미리 정의된 명령을 여러개 제공하지만 필요한 경우 직접 명령을 추가할 수 있습니다. 또한 고급 사용자는 특정 컴파일러 . OS조합에 대해 다른 Makefile생성기를 추가할 수 있습니다. (Unix및 MSC++는 현재 지원되지만, 다른 개발자들은 다른 압축기 .OS 지원을 추가하고 있습니다.)

CMake는 Visible Human Project의 일환으로 NLM이 자금을 지원하는 ITK(InsightSegmentationandRegistrationToolkit)를 위한 강력한 교차 플랫폼 빌드 환경의 필요성에 따라 생성되었습니다. 이는 KenMartin과 다른 개발자들이 VTK(시각화 도구 키트)오픈 소스 3D그래픽 및 시각화 시스템을 지원하기 위해 만든 pcmaker라는 이전 시스템의 영향을 받았습니다. CMake를 만들기 위해 Kitware의 BillHorke는 pcmaker의 몇가지 핵심 아이디어를 통합하고 Unix구성 도구의 기능을 일부 채택할 생각으로 자신의 아이디어를 더 추가했습니다. 초기 CMake구현은 2000년 중반이었고, 2001년 초에 개발이 가속화되었습니다. 많은 발전들은 CMake를 그들의 시스템에 통합시킨 다른 개발자들의 영향 때문이었다. 예를 들어 VXLAN소프트웨어 커뮤니티는 CMake를 구축 환경으로 채택하여 많은 필수 기능을 제공했습니다. 브래드 킹은 CABLE, 자동 포장 환경 및 GCC-XML을 지원하기 위해 여러 기능을 추가했으며 GECorporateResearch는 테스트 인프라(DART)를 지원해야 했습니다. VTK의 빌드 환경을 CMake로 전환하는 것을 지원하고, LAAlamos국립 연구소의 AdvancedComputingLab을 지원하는 병렬 시각화 시스템인 ParaView를 지원하기 위해 다른 기능이 추가되었습니다.

728x90
반응형

댓글