전제 조건
CataclysmBN을 빌드하려면 다음 라이브러리와 개발 헤더가 설치되어 있어야 합니다:
- General
cmake>= 3.0.0gcc>= 14clang>= 19gcc-libsglibczlibbzip2sqlite3
- Curses
ncurses
- Tiles
SDL>= 2.0.0SDL_image>= 2.0.0 (PNG 및 JPEG 지원 포함)SDL_mixer>= 2.0.0 (Ogg Vorbis 지원 포함)SDL_ttf>= 2.0.0freetype
- Sound
vorbislibbz2libz
현지화 파일을 컴파일하려면 gettext 패키지도 필요합니다.
빌드 환경
git에서 최신 버전의 소스 코드 tarball을 얻을 수 있습니다.
git clone --filter=blob:none https://github.com/cataclysmbn/Cataclysm-BN.git
cd Cataclysm-BN
Tip
filter=blob:none은 blobless clone을 생성하여 파일을 필요에 따라 다운로드함으로써 초기 클론을 훨씬 빠르게 만듭니다.
UNIX 환경
시스템 패키지 관리자로 위에 지정된 패키지를 얻습니다.
- Ubuntu 기반 배포판 (24.04 이상):
sudo apt install git cmake ninja-build mold g++-14 clang-20 ccache \
libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev libsdl2-mixer-dev \
libfreetype-dev bzip2 zlib1g-dev libvorbis-dev libncurses-dev \
gettext libflac++-dev libsqlite3-dev zlib1g-dev
- Fedora 기반 배포판:
sudo dnf install git cmake ninja-build mold clang ccache \
SDL2-devel SDL2_image-devel SDL2_ttf-devel SDL2_mixer-devel \
freetype glibc bzip2 zlib-ng libvorbis ncurses gettext flac-devel \
sqlite-devel zlib-devel
컴파일러 버전 확인
CataclysmBN을 빌드하려면 최소한 gcc 14 및 clang 19가 있어야 합니다. 컴파일러 버전을 확인할 수 있습니다:
$ g++ --version
g++ (GCC) 15.2.1 20250808 (Red Hat 15.2.1-1)
Copyright (C) 2025 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ clang++ --version
clang version 20.1.8 (Fedora 20.1.8-4.fc42)
Target: x86_64-redhat-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Configuration file: /etc/clang/x86_64-redhat-linux-gnu-clang++.cfg
Tip
gcc-{version} 설치했지만 gcc를 찾을 수 없을 때
update-alternatives를 사용하여 기본 gcc 버전을 설정합니다:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-14 100
sudo update-alternatives --display gcc
gcc - auto mode
link best version is /usr/bin/gcc-14
link currently points to /usr/bin/gcc-14
link gcc is /usr/bin/gcc
/usr/bin/gcc-14 - priority 100
sudo update-alternatives --display g++
g++ - auto mode
link best version is /usr/bin/g++-14
link currently points to /usr/bin/g++-14
link g++ is /usr/bin/g++
/usr/bin/g++-14 - priority 100
clang에도 동일하게 적용됩니다.
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-20 100
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-20 100
Windows Subsystem for Linux (WSL)
UNIX environment와 동일한 지침을 따릅니다. 그냥 작동합니다 (TM)
tiles를 사용할 계획이라면 GUI를 지원하는 최신 WSL 2와 일치하는 드라이버를 설치했는지 확인하세요.
Windows 환경 (MSYS2)
- https://msys2.github.io/의 단계를 따릅니다.
- CataclysmBN 빌드 의존성을 설치합니다:
pacman -S mingw-w64-x86_64-toolchain msys/git \
mingw-w64-x86_64-cmake \
mingw-w64-x86_64-SDL2_{image,mixer,ttf} \
ncurses-devel \
gettext \
base-devel
Windows의 콘솔 및 타일 버전을 빌드하기 위한 환경이 설정되어야 합니다.
Note
Jetbrains CLion으로 테스트하려는 경우 내장 cmake 대신 msys32/mingw32 경로의 cmake 버전을 가리킵니다. 이렇게 하면 cmake가 설치된 패키지를 감지할 수 있습니다.
CMake 빌드
CMake에는 별도의 구성 및 빌드 단계가 있습니다. 구성은 CMake 자체를 사용하여 수행되며 실제 빌드는 make (Makefiles 생성기용) 또는 빌드 시스템에 구애받지 않는 cmake --build .를 사용하여 수행됩니다.
소스 트리 내부 또는 외부에서 CataclysmBN을 빌드하는 두 가지 방법이 있습니다. 소스 외부 빌드는 하나의 소스 디렉토리에서 다른 옵션을 가진 여러 빌드를 가질 수 있다는 장점이 있습니다.
Caution
소스 트리 내부 빌드는 지원되지 않습니다.
프리셋으로 빌드 (권장)
여러 사전 정의된 빌드 프리셋을 사용할 수 있어 빌드 프로세스가 두 가지 명령으로 간단해집니다:
cmake --preset linux-slim
cmake --build build --preset linux-slim --target cataclysm-bn-tiles
실행 파일이 out/build/linux-slim/에 생성됩니다.
Tip
clang-tidy 플러그인과 tracy 프로파일러가 내장된 빌드를 하려면 linux-full을 시도해보세요.
Note
여러 대상을 한 번에 빌드할 수 있습니다:
cmake --build build --preset linux-slim --target cataclysm-bn-tiles cata_test-tiles
또는 --parallel 옵션으로 최대 스레드 수를 제한합니다:
cmake --build build --preset linux-slim --target cataclysm-bn-tiles --parallel 4
프리셋 없이 빌드
CataclysmBN을 소스 외부에서 빌드하려면:
mkdir build
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
위의 예제는 소스 디렉토리 내부에 빌드 디렉토리를 만들지만 필수는 아닙니다 - 완전히 다른 위치에 쉽게 만들 수 있습니다.
빌드 후 CataclysmBN을 설치하려면 (필요시 su 또는 sudo를 사용하여 root로):
cmake --install build
배포 패키지 생성
포터블 배포 패키지를 만들려면 dist-tiles 또는 dist-curses 프리셋을 사용합니다:
# 타일 배포 구성
cmake --preset dist-tiles
# 게임 및 도구 빌드
cmake --build --preset dist-tiles
# 배포 패키지 생성
cmake --install build --prefix cataclysmbn-linux-tiles
curses 전용 빌드:
cmake --preset dist-curses
cmake --build --preset dist-curses
cmake --install build --prefix cataclysmbn-linux-curses
다음 구조로 자체 포함 디렉토리를 만듭니다:
cataclysmbn-linux-tiles/
├── cataclysm-bn-tiles # 게임 실행 파일
├── cataclysm-launcher # 런처 스크립트
├── json_formatter # JSON 포매팅 도구
├── data/ # 게임 데이터 파일
├── gfx/ # 타일셋
├── lang/ # 번역
├── doc/ # 문서
├── README.md
├── LICENSE.txt
└── VERSION.txt
배포용 tarball을 만들려면:
tar -czvf cataclysmbn-linux-tiles.tar.gz cataclysmbn-linux-tiles
Tip
cataclysm-launcher 스크립트는 올바른 작업 디렉토리와 라이브러리 경로를 설정합니다.
어느 위치에서든 게임을 실행하는 데 사용하세요.
배포 프리셋
| 프리셋 | 설명 |
|---|---|
dist-tiles |
Tiles + Sound + Languages |
dist-curses |
Curses + Languages |
lint |
포매팅 도구만을 위한 최소 빌드 |
포터블 vs 시스템 설치
| 옵션 | USE_PREFIX_DATA_DIR=OFF |
USE_PREFIX_DATA_DIR=ON |
|---|---|---|
| 데이터 위치 | ./data/ |
/usr/share/cataclysm-bn/ |
| 설정 위치 | ./config/ |
~/.config/cataclysm-bn/ |
| 적합 용도 | 포터블/릴리스 빌드 | 시스템 패키지 (deb/rpm) |
빌드 옵션을 변경하려면 명령줄에서 옵션을 전달할 수 있습니다:
cmake .. -DOPTION_NAME=option_value
또는 콘솔 및 그래픽 UI에서 모든 옵션과 캐시된 값을 각각 표시하는 ccmake 또는 cmake-gui 프론트엔드를 사용합니다.
ccmake ..
cmake-gui ..
Visual Studio / MSBuild용 빌드
CMake는 Visual Studio 자체 또는 MSBuild 명령줄 컴파일러 (전체 IDE를 원하지 않는 경우)에서 사용하는 .sln 및 .vcxproj 파일을 생성할 수 있으며 MSYS/Cygwin이 제공할 수 있는 것보다 더 "네이티브" 바이너리를 가질 수 있습니다.
현재 제한된 옵션 조합만 지원됩니다 (타일만, 현지화 없음, 백트레이스 없음).
도구 얻기:
- 공식 사이트의 CMake - https://cmake.org/download/.
- Microsoft 컴파일러 - https://visualstudio.microsoft.com/downloads/?q=build+tools, "Build Tools for Visual Studio 2017" 선택. 설치 시 "Visual C++ Build Tools" 옵션을 선택합니다.
- 또는 전체 Visual Studio를 다운로드하고 설치할 수 있지만 필수는 아닙니다.
필요한 라이브러리 얻기:
- SDL2 ("Visual C++ 32/64-bit" 버전 필요. 아래도 동일)
- SDL2_ttf
- SDL2_image
- SDL2_mixer (선택 사항, 사운드 지원용)
- 지원되지 않는 (다음 지침에서 사용되지 않는) 선택적 라이브러리:
ncurses- ???
라이브러리와 함께 아카이브의 압축을 풉니다.
Windows 명령줄 (또는 powershell)을 열고 환경 변수를 다음과 같이 설정하여 위의 라이브러리를 가리킵니다 (경로를 적절히 조정):
set SDL2DIR=C:\path\to\SDL2-devel-2.0.9-VC
set SDL2TTFDIR=C:\path\to\SDL2_ttf-devel-2.0.15-VC
set SDL2IMAGEDIR=C:\path\to\SDL2_image-devel-2.0.4-VC
set SDL2MIXERDIR=C:\path\to\SDL2_mixer-devel-2.0.4-VC
(powershell의 경우 구문은 $env:SDL2DIR="C:\path\to\SDL2-devel-2.0.9-VC").
빌드 디렉토리를 만들고 cmake 구성 단계를 실행합니다:
cd <path to cbn sources>
mkdir build
cmake -B build -DTILES=ON -DLANGUAGES=none -DBACKTRACE=OFF -DSOUND=ON
빌드!
cmake --build build -j 2 -- /p:Configuration=Release
-j 2 플래그는 빌드 병렬 처리를 제어합니다 - 원하면 생략할 수 있습니다. /p:Configuration=Release 플래그는 MSBuild에 직접 전달되어 최적화를 제어합니다. 생략하면 Debug 구성이 대신 빌드됩니다. powershell의 경우 첫 번째 -- 뒤에 추가 --가 필요합니다.
결과 파일은 소스 Cataclysm-BN 폴더 내부의 Release 디렉토리에 저장됩니다. 실행하려면 먼저 소스 Cataclysm-BN 디렉토리 자체로 이동해야 합니다 (바이너리가 게임 데이터에 접근할 수 있도록). 두 번째로 필요한 .dll을 동일한 폴더에 넣어야 합니다 - 개발 라이브러리용 디렉토리 내부의 lib/x86/ 또는 lib/x64/ 아래에서 찾을 수 있습니다 (64비트 머신이어도 x86 것이 필요할 가능성이 높음).
dll 복사는 일회성 작업이지만 빌드될 때마다 바이너리를 Release/ 밖으로 이동해야 합니다. 이를 자동화하려면 -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE= 옵션 (및 CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG와 유사)으로 cmake를 구성하고 원하는 바이너리 대상 디렉토리를 설정할 수 있습니다.
게임을 실행합니다. 작동해야 합니다.
빌드 옵션
CMake가 지원하는 전체 옵션 목록은 ccmake 또는 cmake-gui 프론트엔드를 실행하거나 cmake를 실행하고 빌드 디렉토리에서 생성된 CMakeCache.txt를 텍스트 에디터에서 열 수 있습니다.
cmake -DOPTION_NAME1=option_value1 [-DOPTION_NAME2=option_value2 [...]]
CMake 특정 옵션
- CMAKE_BUILD_TYPE=
<build type>
컴파일 시 특정 빌드 구성을 선택합니다. release는 일반 사용을 위한 기본 최적화된 (-Os) 빌드를 생성합니다. debug는 버그를 보고할 때 자세한 백트레이스를 얻는 데 종종 필요한 전체 디버그 심볼이 있는 느리고 큰 최적화되지 않은 (-O0) 빌드를 생성합니다.
참고: 기본적으로 CMake는 명령줄에서 다른 구성 옵션이 전달되지 않으면 debug 빌드를 생성합니다.
- CMAKE_INSTALL_PREFIX=
<full path>
바이너리, 리소스 및 문서 파일의 설치 접두사입니다.
CataclysmBN 특정 옵션
- CURSES=
<boolean>
curses 버전을 빌드합니다.
- TILES=
<boolean>
그래픽 타일셋 버전을 빌드합니다.
- SOUND=
<boolean>
게임 내 사운드 및 음악 지원.
- USE_HOME_DIR=
<boolean>
저장 파일에 사용자의 홈 디렉토리를 사용합니다.
- LANGUAGES=
<str>
지정된 언어에 대한 현지화 파일을 컴파일합니다. 예:
-DLANGUAGES="cs;de;el;es_AR;es_ES"
언어 파일은 RELEASE 빌드 유형을 빌드할 때만 자동으로 컴파일됩니다. 다른 빌드 유형의 경우 make 명령에 translations_compile 대상을 추가해야 합니다 (예: make all translations_compile).
- DYNAMIC_LINKING=
<boolean>
동적 링킹을 사용합니다. 또는 정적을 사용하여 MinGW 의존성을 제거합니다.
- CUSTOM LINKER=
<str>
gold, lld 또는 mold와 같은 커스텀 링커를 선택합니다.
- libbacktrace를 사용하지 않으면 ld를 선택하세요.
- libbacktrace를 사용하면 mold를 선택하세요. gold보다 24배 빠른 가장 빠른 링커입니다.
- BACKTRACE=
<boolean>
크래시 시 콘솔에 백트레이스를 출력합니다. 디버그 빌드의 경우 기본적으로 ON입니다.
- LIBBACKTRACE=
<boolean>
libbacktrace로 백트레이스를 출력합니다. lld와 mold가 백트레이스를 출력할 수 있게 하며 일반적으로 훨씬 빠릅니다.
- USE_TRACY=
<boolean>
tracy 프로파일러를 사용합니다. 자세한 내용은 tracy로 프로파일링하기를 참조하세요.
- GIT_BINARY=
<str>
기본 Git 바이너리 이름 또는 경로를 재정의합니다.
- USE_PREFIX_DATA_DIR=
<boolean>
릴리스 빌드에서 게임 데이터에 UNIX 시스템 디렉토리를 사용합니다.
- USE_XDG_DIR=
<boolean>
저장 및 설정 파일에 XDG 디렉토리를 사용합니다.
- TESTS=
<boolean>
테스트를 빌드할지 여부입니다.
- JSON_FORMAT=
<boolean>
JSON 파일 포매팅을 위한 json_formatter 도구를 빌드하고 style-json / style-json-parallel 대상을 활성화합니다. 사용법은 포매팅 및 린팅을 참조하세요.
따라서 타일 및 사운드 지원이 있는 릴리스 모드로 Cataclysm-BN을 빌드하기 위한 CMake 명령은 다음과 같습니다 (프로젝트에 위치한 빌드 디렉토리에서 실행된다고 가정).
cmake ../ -DCMAKE_BUILD_TYPE=Release -DTILES=ON -DSOUND=ON