The advantage of this approach is, that the **vcpkg** integration
to VS Code would work for all CMake C++ projects on your computer.
### CLion
Clion can work with an existing **vcpkg** installation, or it can install it automatically.
To integrate **vcpkg**, follow the instructions in the official CLion Blog: [Support for vcpkg in CLion](https://blog.jetbrains.com/clion/2023/01/support-for-vcpkg-in-clion/)
## Building **age**
### Visual Studio Code
Open **Microsoft Visual Studio Code** and in the main menu choose:
`File/Open Folder...` and open the directory `<project-root-dir>`.
Now you should be able to build the project the same way as any other
CMake C++ application. All needed information are available here:
Once you successfully build the `install` target, then you can find
the built game under the `dist` directory.
**age** looks for data according to the `cwd`, please run **age** from the tasks
provided or directly from any folder containing its data. This means, running the
project from folder `<project-root-dir>/build` via `../dist/maker` will not work as
opposed to running it directly from `<project-root-dir>/dist`.
### CLion
Open the root directory via _File > Open_ and build the `install` target with _Build > install_.
If you need help with building and running a CMake C++ application, take a look at the CLion [Quick CMake tutorial](https://www.jetbrains.com/help/clion/quick-cmake-tutorial.html).
CLion should automatically load all the CMake targets, however, you will need to configure
the `maker` target to run it correctly. To do that, click on the CMake targets dropdown menu
(on the right side of the upper bar, next to the _build_ icon) and select _Edit Configurations..._.
Then click on the `maker` target and set the working directory to `<project-root-dir>/dist`.
## Understanding the source code
**age** is basically a collection of libraries operating over a single
data structure, which can be seen an in-memory disk. This disk itself is
also a library.
For each library, there is included a `README.md` file where is described
the purpose and functionality of the library. Details about usage
and implementation of the library is then available via source code comments.