TODO: College project.. thing.
Compilation using Docker
Project contains script files named docker-build
. It builds the image and creates temporary container, to compile and extract executables into the builds
folder, put into the project's root directory.
This should always use the newest version of image. If the changes aren't reflected in the binary files, make sure docker recreates last compilation steps or if the created container uses latest version.
To get started, simply run it.
Make sure you have conan and cmake installed before reproducing provided steps.
This project uses Conan to install dependencies. If you're using different package manager, you can reference the conanfile.txt
file for requirements and the configuration.
You might want to update remote to use the new ConanCenter first. The default configuration as of time of writing is deprecated, which causes errors during installation. You can do that through command line:
conan remote update conan-center https://center.conan.io
- First, create your
build
directory. Following commands need to be run from it.
mkdir build
cd build
- Install dependencies using conan. This command needs to be rerun each time dependencies change.
conan install ..
- Generate and build cmake files. You can specify compiler used in generation with the
-G
flag of the first command.
cmake .. cmake --build . --config Release
cmake .. -DCMAKE_BUILD_TYPE=Release cmake --build .
You might want to develop in Debug mode. For that, you need to change dependencies to use debug versions of libraries.
To develop, you need to link the libraries to your IDE software.
- Create
vsbuild
directory. Destination is defined inCMakeSettings.json
and you need to adjust paths there if you want to change the build location. Following commands need to be run from it.
mkdir vsbuild
cd vsbuild
- Install dependencies using conan.
conan install ..
- You can use the
Generate Cache
option, which appears when right-clicking CMakeLists.txt. You can also be prompted to do it with notification box. Otherwise you need to link external libraries manually.