# Compiling
+## Initial build
+
This project uses the usual CMake workflow:
-## Debug
+### Debug
```
cmake -G "Unix Makefiles" -H. -Bbuild -DCMAKE_BUILD_TYPE=Debug && cmake --build build -- -j$(nproc)
```
-## Release
+### Release
```
cmake -G "Unix Makefiles" -H. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build -- -j$(nproc)
-DCMAKE_C_COMPILER=/usr/local/bin/gcc8 -DCMAKE_CXX_COMPILER=/usr/local/bin/g++8
```
+## Subsequent builds
+
+The initial build will download the gamepacks and build NetRadiant and tools. If you frequently recompile you can skip downloading the gamepacks:
+
+```
+cmake --build build --target binaries -- -j$(nproc)
+```
+
+You should still periodically update gamepacks:
+
+```
+cmake --build build --target gamepacks
+```
+
## Build and installation details
### Compilation details
options:
+* `BUNDLE_LIBRARIES=ON`
+ Bundle libraries (only MSYS2 is supported at this time)
* `BUILD_RADIANT=OFF`
- Do not build NetRadiant (default: `ON`, build radiant graphical editor)
+ Do not build NetRadiant (default: `ON`, build netradiant graphical editor)
* `BUILD_TOOLS=OFF`
Do not build q3map2 and other tools (default: `ON`, build command line tools)
* `BUILD_CRUNCH=ON`
targets:
-* `radiant` Compiles the radiant core binary
-* `modules` Compiles all modules (each module has its own target as well)
-* `plugins` Compiles all plugins (each plugin has its own target as well)
-* `tools` Compiles all tools (each tool has its own target as well)
- - `quake2` Compiles all the Quake2 tools: `q2map`, `qdata3`
- - `heretic2` Compiles all the Heretic2 tools: `q2map`, `h2data`
- - `quake3` Compiles all the Quake3 tools:
- * `q3map2` Compiles the quake3 map compiler
- * `q3data` Compiles the q3data tool
+* `binaries` Compiles all binaries
+ - `netradiant` Compiles the netradiant editor
+ - `modules` Compiles all modules (each module has its own target as well)
+ - `plugins` Compiles all plugins (each plugin has its own target as well)
+ - `tools` Compiles all tools (each tool has its own target as well)
+ * `quake2` Compiles all the Quake2 tools: `q2map`, `qdata3`
+ * `heretic2` Compiles all the Heretic2 tools: `q2map`, `h2data`
+ * `quake3` Compiles all the Quake3 tools:
+ - `q3map2` Compiles the quake3 map compiler
+ - `q3data` Compiles the q3data tool
Type `make help` to get an exhaustive list of targets.
options:
* `DOWNLOAD_GAMEPACKS=OFF`
- Do not automatically download the gamepack data during the first compilation (default: `ON`)
+ Do not automatically download the gamepack data on each compilation and do not install game packs already downloaded (default: `ON`)
* `GAMEPACKS_LICENSE_LIST=all`
Download all gamepacks whatever the license (default: `free`, download free gamepacks, can be set to `none` to only filter by name)
* `GAMEPACKS_NAME_LIST="Xonotic Unvanquished"`
target:
-* `game_packs` Downloads the game pack data
+* `gamepacks` Downloads the game pack data
Run `./gamepacks-manager -h` to know about available licenses and other available games. Both lists are merged, for example setting `GAMEPACKS_LICENSE_LIST=GPL` and `GAMEPACKS_NAME_LIST=Q3` will install both GPL gamepacks and proprietary Quake 3 one.