cmkr: 더 깔끔한 C++ 빌드를 위한 선언적 CMake 생성
표현적인 빌드 흐름을 경험해 보세요. 단일 cmake.toml을 작성하여 표준 CMake 프로젝트를 생성하고, 여기에는 targets 및 dependencieswords)가 포함됩니다. Duncan Ogilvie는 CMake를 Cargo와 유사한 TOML 매니페스트로 래핑하는 유틸리티 도구인 cmkr를 만들었습니다. 이는 CMake 호환성을 유지하면서 보일러플레이트words)를 줄입니다. 주요 기능으로는 TOML 구성, 자동 CMakeLists.txt 생성, FetchContent 및 vcpkg 통합, CI를 위한 자체 부트스트래핑이 포함됩니다. 수동 CMake 스크립팅을 줄이고자 하는 개발자들은 가장 큰 혜택을 얻습니다words).
cmkr는 실제로 무엇을 하나요?
cmkr는 사람이 읽을 수 있는 cmake.toml 파일을 읽고 자동으로 관용적인 CMakeLists.txt 파일을 생성합니다. 이 도구는 프로젝트 메타데이터, 여러 대상 정의(실행 파일, 정적 및 공유 라이브러리), 조건 논리 및 플랫폼별 옵션을 TOML 형식으로 수용한 후, 모든 CMake 인식 IDE 또는 빌드 단계에서 사용할 수 있는 표준 CMake를 출력합니다. 이는 각 프로젝트에 대해 수동으로 작성된 CMake 스크립트를 단일 선언적 매니페스트로 대체합니다.
CI 및 공유 프로젝트에서 어떻게 작동하나요?
cmkr는 자체 부트스트래핑을 제공하므로, 저장소는 생성된 파일과 하위 빌더가 표준 CMake와 C++ 컴파일러만으로 실행할 수 있도록 하는 부트스트랩 스크립트를 포함할 수 있습니다. 이러한 설계는 CI 파이프라인이 cmkr가 미리 설치되어 있을 필요가 없음을 의미합니다. 생성된 CMake는 자동화된 빌드를 위한 정통 입력으로 남아 있어 프로젝트 공유 및 기존 CI 워크플로와의 통합이 간단해집니다.
cmkr는 안전한가요? 그리고 학습 곡선은 얼마나 가파른가요?
이 도구는 표준 CMakeLists.txt를 생성하여 CMake 호환성을 유지하므로 빌드 시간에 CMake를 대체하지 않습니다. 조건 논리 및 플랫폼별 규칙은 TOML에 존재하며, 이는 선언적 항목에서 CMake 구성 요소로의 cmkr의 매핑을 배우는 것을 요구합니다. 개발자의 C++ 도구에 대한 배경과 CMake에 대한 이전 경험은 학습 시간을 줄여줄 것입니다. 초보자는 덜 장황한 구성의 혜택을 누리지만 매니페스트 스키마를 배워야 합니다.
선언적 빌드 메타데이터를 원하는 C++ 팀을 위한 명확한 선택
cmkr는 여러 CMake 스크립트를 유지하는 대신 단일 TOML 매니페스트 작성을 선호하는 개발자에게 적합합니다. 이는 프로젝트가 기존 CMake 도구 및 IDE와 호환되도록 유지하면서 저장소 부트스트래핑을 가능하게 합니다. 주요 단점은 추가적인 추상화 계층입니다: 팀은 CMake 개념을 선언적 스키마에 매핑해야 하며, 이는 시간 절약이 나타나기 전에 초기 학습 단계를 추가합니다.