AI 요약
C/C++ 개발 환경에서 고질적인 문제였던 복잡한 CMake 설정과 수동 의존성 관리 문제를 해결하기 위해 'Craft'라는 새로운 빌드 시스템이 등장했습니다. Craft는 Rust 언어의 패키지 매니저인 Cargo의 사용자 경험을 C/C++ 세계로 가져오는 것을 목표로 하며, 사용자가 craft.toml 파일에 프로젝트 이름, 버전, C++ 표준(예: C++ 17) 등을 정의하면 내부적으로 CMakeLists.txt를 생성하고 빌드 프로세스를 대신 처리합니다. 특히 craft add 명령어를 통해 GitHub 저장소나 로컬 경로의 라이브러리를 즉시 의존성으로 추가할 수 있으며, 이는 Git 클로닝부터 CMake 연결까지 자동으로 수행됩니다. 기존 프로젝트에 craft init을 실행하면 디렉토리 구조를 스캔하여 설정을 자동 생성해주는 등 현대적인 CLI 도구로서의 편의성을 갖추고 있습니다. 현재 macOS, Linux, Windows 플랫폼을 지원하며 Git과 CMake를 기반 요구사항으로 작동합니다.
핵심 인사이트
- 설정의 단순화: 프로젝트의 모든 구성 요소를 단일
craft.toml파일에 정의하며, 실행 파일(executable) 및 라이브러리 타입을 지원합니다. - Cargo 스타일 워크플로우:
craft project,craft build,craft run,craft add등 직관적인 명령어를 통해 빌드 시스템의 복잡성을 은폐합니다. - 의존성 자동화:
raylib과 같은 외부 Git 저장소를--tag 5.5와 같은 옵션과 함께 한 줄의 명령어로 추가하고 관리할 수 있습니다. - 플랫폼 교차 지원: macOS와 Linux용 쉘 스크립트 및 Windows PowerShell용 설치 스크립트를 제공하여 다양한 환경에서 즉시 도입이 가능합니다.
주요 디테일
- 프로젝트 생성 및 초기화:
craft project <path>명령어는src/,include/폴더와 초기 소스 파일,craft.toml이 포함된 표준 구조를 즉시 생성합니다. - 지능형 탐지: 빈 디렉토리가 아닌 기존 프로젝트에서
craft init실행 시, 소스 파일 수정 없이 언어와 소스 디렉토리를 감지하여craft.toml을 구성하며 기존CMakeLists.txt는 백업 처리합니다. - 유연한 의존성 관리:
--path를 통한 로컬 프로젝트 연결과--git을 통한 원격 저장소 연결을 모두 지원하며craft remove,craft update명령어로 관리가 용이합니다. - 사용자 정의 템플릿:
craft template save기능을 통해 특정 프로젝트 구조를 템플릿으로 저장하고, 이후 새 프로젝트 생성 시 이를 재사용할 수 있습니다. - 기술적 요구사항: 도구 작동을 위해 시스템에
git과cmake가 반드시 설치되어 있어야 하며, Craft는 이들 위에서 추상화 레이어 역할을 수행합니다.
향후 전망
- 진입 장벽 완화: CMake의 높은 학습 곡선으로 어려움을 겪는 주니어 C++ 개발자나 신속한 프로토타이핑이 필요한 환경에서 핵심 도구로 자리 잡을 가능성이 높습니다.
- 생태계 확장: 현재는 Git 기반 의존성에 의존하고 있으나, 향후 전용 패키지 레지스트리가 구축된다면 Rust의 Cargo와 유사한 강력한 생태계를 형성할 수 있을 것으로 보입니다.
출처:hackernews
