# CMake configuration flags

Details about installation process are on our [wiki](https://github.com/xournalpp/xournalpp/wiki/Installing).

Here you can find complete list of Xournal++ CMake flags (sorted by categories). Advanced settings are marked with *[A]*.

## `CMAKE` – some additional CMake related config

| Variable name                        | Default | Description
| ------------------------------------ | ------- | -----------
| `CMAKE_DEBUG_INCLUDES_LDFLAGS` *[A]* | OFF     | At the end of config process list all include dirs and libraries used by main xournalpp binary


## `DEBUG` – debugging switches (shouldn't be enabled for normal usage), all *[A]* and disabled by default

| Variable name               | Description
| --------------------------- | -----------
| `DEBUG_COMPILE`             | Pass `-Wall` to `CXX_FLAGS`
| `DEBUG_INPUT`               | Input debugging, e.g. eraser events etc
| `DEBUG_RECOGNIZER`          | Shape recognizer debug: output score etc
| `DEBUG_SHEDULER`            | Scheduler debug: show jobs etc
| `DEBUG_SHOW_ELEMENT_BOUNDS` | Draw a surrounding border to all elements
| `DEBUG_SHOW_PAINT_BOUNDS`   | Draw a border around all painted rects
| `DEBUG_SHOW_REPAINT_BOUNDS` | Draw a border around all repaint rects


## `DEV` – development options, which in most cases should be leaved as they are

| Variable name                  | Default          | Description
| ------------------------------ | ---------------- | -----------
| `DEV_CALL_LOG`                 | OFF              | Call log (can take loooot of disk space and IO!)
| `DEV_CHECK_GTK3_COMPAT` *[A]*  | OFF              | Adds a few compiler flags to check basic GTK3 upgradeability support (still compiles for GTK2!)
| `DEV_CONFIG_DIR` *[A]*         | .xournalpp       | Xournal++ config dir, relative to user's home dir
| `DEV_ENABLE_GCOV` *[A]*        | OFF              | Build with gcov support
| `DEV_MEMORY_CHECKING`          | ON               | Memory checking
| `DEV_MEMORY_LEAK_CHECKING`     | ON               | Memory leak checking
| `DEV_METADATA_FILE` *[A]*      | metadata.ini     | Metadata file name
| `DEV_METADATA_MAX_ITEMS` *[A]* | 50               | Maximal amount of metadata elements
| `DEV_PRINT_CONFIG_FILE` *[A]*  | print-config.ini | Print config file name
| `DEV_SETTINGS_XML_FILE` *[A]*  | settings.xml     | Settings file name
| `DEV_TOOLBAR_CONFIG` *[A]*     | toolbar.ini      | Toolbar config file name
| `DEV_ERRORLOG_DIR` *[A]*       | ""               | Directory where errorlogfiles will be placed


## `EXT` – add dependency basing on precompiled deb packages (UNIX only)

| Variable name | Default | Description
| ------------- | ------- | -----------
| `EXT_GLIBMM`  | OFF     | Glibmm and Gtkmm binaries


## `ENABLE` – basic stable features support

| Variable name        | Default | Description
| -------------------- | ------- | -----------
| `ENABLE_CPPUNIT`     | OFF     | Build CppUnit test instead of xournalpp application


## `TEST` – optional features of CppUnit tests

| Variable name      | Default | Description
| ------------------ | ------- | -----------
| `TEST_CHECK_SPEED` | OFF     | Show speed benchmarks for some tests


## `PATH` – here you can specify alternative location of these binaries (there are no defaults)

| Variable name | Description
| ------------- | -----------
| `PATH_AR`     | `ar` is needed to unpack debs (if any of `EXT` packages are added)
| `PATH_GIT`    | `git` is needed to include info about issue tracker and other git-repo-realted info
| `PATH_TAR`    | `tar` is needed to unpack debs (if any of `EXT` packages are added)
| `PATH_WGET`   | `wget` is needed to download debs (if any of `EXT` packages are added)

