# Compilar JailDoctor's Dilemma ## Linux (Debian/Ubuntu) Instal·la les dependències: ```bash sudo apt install cmake make g++ xxd glslang-tools glslc ``` Per a SDL3, instal·la el paquet de desenvolupament si està disponible al teu repositori: ```bash sudo apt install libsdl3-dev ``` Si `libsdl3-dev` no està als repos (SDL3 és recent i pot no estar a Debian stable), compila'l des del codi font: ```bash git clone https://github.com/libsdl-org/SDL.git --branch release-3.x --depth 1 cd SDL && cmake -B build && cmake --build build && sudo cmake --install build ``` Compila el joc: ```bash cmake -B build cmake --build build ``` --- ## Windows (MinGW via WinLibs) 1. Instal·la [WinLibs](https://winlibs.com/) (MinGW-w64 amb GCC) 2. Instal·la [CMake](https://cmake.org/download/) 3. Descarrega les [biblioteques de desenvolupament de SDL3 per a MinGW](https://github.com/libsdl-org/SDL/releases) — copia les capçaleres a `include/` i els fitxers `.a` a `lib/` de MinGW 4. Instal·la el [Vulkan SDK](https://vulkan.lunarg.com/sdk/home) — proporciona `glslc` per a la compilació dels shaders Compila el joc (des d'un terminal MinGW): ```bash cmake -B build -G "MinGW Makefiles" cmake --build build ``` --- ## macOS Instal·la les dependències amb [Homebrew](https://brew.sh): ```bash brew install cmake sdl3 glslang ``` Compila el joc: ```bash cmake -B build cmake --build build ``` --- ## Què fa la compilació `cmake --build build` ho gestiona tot en ordre: 1. **Compila els shaders** — regenera `postfx_vert_spv.h` / `postfx_frag_spv.h` si els fitxers `.vert` o `.frag` han canviat (requereix `glslc`) 2. **Compila el joc** — només recompila els fitxers `.cpp` modificats 3. **Empaqueta els recursos** — regenera `resources.pack` des de `data/` si algun asset ha canviat Si `glslc` no està instal·lat, s'utilitzen les capçaleres de shaders precompilades (incloses al repositori). > **Nota:** El `file(GLOB_RECURSE)` sobre `data/` s'avalua en temps de configuració de CMake. Si **afegeixes un fitxer nou** a `data/`, executa `cmake -B build` de nou perquè CMake el detecte com a dependència. L'executable es genera a l'arrel del projecte: `./jaildoctors_dilemma`