This is an explanation of the file structure that the cookiecutter generated for you: * C++ source files: * `include/glsl-basic/glsl-basic.hpp` is the main C++ header that declares the interface of your library. * `src/glsl-basic.cpp` is the main file that implements this library. * `app/glsl-basic_app.cpp` is an executable that uses the library. This can e.g. be used to provide a command line interface for your project. * `tests/glsl-basic_t.cpp` contains the unit tests for the library. The unit tests are written using Catch2. For further reading on what can be achieved with Catch2, we recommend [their tutorial](https://github.com/catchorg/Catch2/blob/devel/docs/tutorial.md). * `tests/tests.cpp` is the Catch2 testing driver. You do not need to change this. Placing this in a separate compilation unit than the unit test implementation decreases the compilation time of the test suite. * CMake build system files * `CMakeLists.txt` describes the CMake configuration script. You can find such files in many directories. When CMake runs, the `CMakeLists.txt` from the top-level directory executes top to bottom. Whenever a command `add_subdirectory()` is executed, the `CMakeLists.txt` file from the directory `` is immediately executed. A comprehensive reference of CMake's capabilities can be found in the [official CMake docs](https://cmake.org/documentation/). A well-written, opinionated book for beginners and experts is [Modern CMake](https://cliutils.gitlab.io/modern-cmake/). * `glsl-basicConfig.cmake.in` provides a template for the configuration installed alongside your project. This is required to implement the transitivity of your dependency on `GLFW`: If downstream projects use your library, they should automatically search for `GLFW`. The config file template implements exactly this logic. * Documentation configuration files * Configuration for CI/Code analysis/Documentation services * Markdown files with meta information on the project. [Markdown](https://www.markdownguide.org/basic-syntax/) is a good language for these files, as it is easy to write and rendered into something beautiful by your git repository hosting provider. * `README.md` is the file that users will typically see first when discovering your project. * `COPYING.md` provides a list of copyright holders. * `LICENSE.md` contains the license you selected. * `TODO.md` contains a list of TODOs after running the cookiecutter. Following the instructions in that file will give you a fully functional repository with a lot of integration into useful web services activated and running. * `FILESTRUCTURE.md` describes the generated files. Feel free to remove this from the repository if you do not need it. * Other files * `.gitignore` contains a default selection of files to omit from version control.