# Developing in Debian These instructions assume an up-to-date Debian/Ubuntu system. For other platforms, please instead use the following: * [Developing in Docker](developing_in_docker.md). * [Cross Compiling for Windows with Crossroad](developing_with_crossroad.md). ## Minimum build dependencies Apart from the dependencies in `third_party`, some of the tools use external dependencies that need to be installed on your system first: ```bash sudo apt install cmake clang doxygen g++ extra-cmake-modules libgflags-dev \ libgif-dev libjpeg-dev ninja-build libgoogle-perftools-dev ``` Make sure your default `clang` compiler is at least version 6 by running ```bash clang --version ``` If it still shows an old version despite having, for example, `clang-7` installed, you need to update the default `clang` compiler. On Debian-based systems run: ```bash sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-7 100 sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-7 100 ``` Optionally, to compile some of the extra tool support and tests you can install the following packages: ```bash sudo apt install qtbase5-dev libqt5x11extras5-dev libwebp-dev libgimp2.0-dev \ libopenexr-dev libgtest-dev libgmock-dev libbenchmark-dev libbenchmark-tools ``` For the lint/coverage commands, you will also need additional packages: ```bash sudo apt install clang-format clang-tidy curl parallel gcovr ``` ## Building The `libjxl` project uses CMake to build. We provide a script that simplifies the invocation. To build and test the project, run ```bash ./ci.sh opt ``` This writes binaries to `build/tools` and runs unit tests. More information on [build modes and testing](building_and_testing.md) is available.