C/C++ 빌드, 이제 Craft로 간편하게!
C/C++ 프로젝트 설정을 간소화하는 Craft는 CMake를 대체하여 `craft.toml` 설정 파일 기반으로 빌드를 자동화함
의존성 관리(Dependency Management)를 위한 `craft add` 명령어를 제공하며, Git, 로컬 프로젝트, SFML 등 다양한 의존성 지원
오프라인 빌드(Offline Build), pkg-config 및 CPS 지원 등, 대규모 C/C++ 프로젝트 통합에 필요한 기능 부재에 대한 지적
CMake 기반으로 구현되어, CMake 자체를 대체해야 한다는 근본적인 문제 제기 및 AI 기반 빌드 스크립트 생성의 효율성 강조
Craft의 주요 기능 및 사용성
Craft는 C/C++ 프로젝트의 빌드 과정을 단순화하기 위해 설계되었으며, `craft.toml` 파일을 통해 프로젝트를 정의하고, CMakeLists.txt를 자동 생성(Automatic Generation)한다. Craft는 의존성 관리를 위해 `craft add` 명령어를 제공하여, Git, 로컬 프로젝트, SFML과 같은 다양한 의존성을 쉽게 추가할 수 있도록 지원한다. 또한, 템플릿 기능을 통해 프로젝트 설정을 빠르게 시작할 수 있으며, `craft build` 및 `craft run` 명령어를 통해 빌드 및 실행을 간편하게 수행할 수 있다.
Craft의 한계점 및 개선 방향
커뮤니티에서는 Craft가 오프라인 빌드 지원, pkg-config 및 CPS(Component Package System)와의 호환성, 그리고 크로스 컴파일 지원 등 대규모 C/C++ 프로젝트 통합(Large-Scale C/C++ Project Integration)에 필요한 기능이 부족하다는 점을 지적했다. 특히, 오프라인 빌드 및 수동적인 의존성 경로 지정 기능 부재는 보안 및 재현성 측면에서 심각한 문제로 언급되었다. 또한, `curl | sh`를 사용한 설치 방식에 대한 보안 우려도 제기되었다.
Craft와 기존 빌드 도구 비교
Craft는 Cargo와 유사한 사용성을 제공하지만, CMake를 기반으로 한다는 점에서 근본적인 한계를 가진다는 비판이 제기되었다. CMake의 복잡성(Complexity)을 완전히 해결하지 못하고, 단지 CMake를 감싸는 래퍼(Wrapper) 역할에 그친다는 것이다. Conan, vcpkg와 같은 기존 C/C++ 패키지 관리자 및 빌드 시스템과의 통합에 대한 언급도 있었으며, AI 기반 빌드 스크립트 생성 도구의 등장으로 인해 Craft의 필요성에 대한 의문이 제기되기도 했다.
Craft의 잠재적 문제점 및 미래
Craft는 C/C++ 빌드 시스템의 복잡성을 해결하려는 시도이지만, 다양한 환경(Various Environments)과 특수한 경우(Special Cases)를 모두 처리해야 하는 어려움에 직면할 수 있다. 특히, 임베디드 시스템과 같은 특정 환경에서는 CMake가 적합하지 않을 수 있으며, Craft가 이러한 환경을 얼마나 잘 지원할 수 있을지가 관건이다. 또한, Craft가 CMake를 완전히 대체하지 못하는 한, CMake의 복잡성 문제를 완전히 해결하기는 어려울 것으로 보인다.