Game Engine - Build System Generator

내가 Build System 을 고려하다가 정리를 해본다.

특징PremakeCMake
목적프로젝트 파일 생성 (주로 IDE 지원)Makefile이나 Visual Studio 프로젝트 등을 자동 생성
설정 파일 형식Lua 스크립트 (premake5.lua)독자적인 스크립트 언어 (CMakeLists.txt)
언어Lua 스크립트 기반자체 DSL (도메인 특화 언어)
지원 플랫폼Windows, macOS, Linux대부분의 플랫폼 및 툴체인 지원
생성 파일Visual Studio, Xcode, GNU Make, Code::Blocks, gmake 등Visual Studio, Xcode, Ninja, Makefile 등 다양한 빌드 시스템 지원
학습 곡선Lua를 알고 있다면 비교적 간단자체 문법 학습이 필요, 복잡한 구조일 때 난이도 증가
사용 사례게임 엔진, 그래픽 라이브러리 등 주로 C++ 프로젝트에 사용오픈소스 프로젝트, 다양한 플랫폼 지원이 필요한 프로젝트
설정 방식Lua 스크립트를 통해 논리적 설정 가능선언형으로 프로젝트 기술, 간단하지만 복잡한 설정은 코드가 길어짐
빌드 속도비교적 빠름Ninja와 같은 고속 빌드 툴과 함께 사용 가능
커뮤니티와 문서상대적으로 작음커뮤니티가 크고 문서가 방대

지원 플랫폼 및 유연성

  • Premake: 주로 Visual Studio, Xcode, GNU Make를 타겟으로 사용하며, 게임 엔진이나 그래픽 라이브러리 개발에 많이 사용됩니다.
  • CMake: 거의 모든 플랫폼과 빌드 시스템을 지원합니다. 특히 Ninja와 함께 사용할 때 빌드 속도가 매우 빠릅니다.

    생태계와 커뮤니티 지원

  • Premake: 게임 엔진 및 일부 그래픽 라이브러리에서 주로 사용됩니다. 대표적으로 LunaEngine이나 Unreal Engine에서 사용합니다.
  • CMake: 오픈소스 프로젝트에서 표준으로 사용됩니다. 예를 들어 LLVM, Qt, OpenCV 등이 CMake를 사용