[Show HN] C/C++ 환경을 위한 Cargo 스타일의 빌드 시스템 개발기

Craft는 Rust의 Cargo에서 영감을 받아 C/C++ 프로젝트의 빌드 및 의존성 관리를 자동화하는 경량 빌드 도구입니다. craft.toml 단일 설정 파일을 통해 CMake 구성을 자동 생성하며, Git 기반의 라이브러리 추가와 템플릿 기능을 통해 개발 생산성을 극대화합니다.

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 기능을 통해 특정 프로젝트 구조를 템플릿으로 저장하고, 이후 새 프로젝트 생성 시 이를 재사용할 수 있습니다.
  • 기술적 요구사항: 도구 작동을 위해 시스템에 gitcmake가 반드시 설치되어 있어야 하며, Craft는 이들 위에서 추상화 레이어 역할을 수행합니다.

향후 전망

  • 진입 장벽 완화: CMake의 높은 학습 곡선으로 어려움을 겪는 주니어 C++ 개발자나 신속한 프로토타이핑이 필요한 환경에서 핵심 도구로 자리 잡을 가능성이 높습니다.
  • 생태계 확장: 현재는 Git 기반 의존성에 의존하고 있으나, 향후 전용 패키지 레지스트리가 구축된다면 Rust의 Cargo와 유사한 강력한 생태계를 형성할 수 있을 것으로 보입니다.
Share

이것도 읽어보세요

댓글

이 소식에 대한 의견을 자유롭게 남겨주세요.

댓글 (0)

불러오는 중...