This is an explanation of the repository's file structure:
- C++ source files:
include/your-project/your-project.hppis the main C++ header that declares the interface of your library.src/your-project.cppis the main file that implements this library.app/your-project_app.cppis an executable that uses the library. This can e.g. be used to provide a command line interface for your project.tests/your-project_t.cppcontains 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.
- CMake build system files
CMakeLists.txtdescribes the CMake configuration script. You can find such files in many directories. When CMake runs, theCMakeLists.txtfrom the top-level directory executes top to bottom. Whenever a commandadd_subdirectory(<dir>)is executed, theCMakeLists.txtfile from the directory<dir>is immediately executed. A comprehensive reference of CMake's capabilities can be found in the official CMake docs. A well-written, opinionated book for beginners and experts is Modern CMake.
- Documentation configuration files
- The Doxygen documentation is configured directly from
doc/CMakeLists.txt. To further configure the build, you can check the Doxygen Configuration Manual for available options and add them withset(DOXYGEN_<param> <value>)before the call todoxygen_add_docs. doc/index.rstcontains the actual text of the Sphinx documentation. It is written in reStructuredText, which is described in the Sphinx documentation.doc/conf.pyconfigures the Sphinx documentation that is build for readthedocs. The file contains the default configuration of Sphinx that can be adapted according to their Configuration Guide. Additionally, the file contains build logic for readthedocs that integrates Doxygen output throughbreathe. For information on what is possible withbreathe, check the Breathe documentation.doc/requirements-rtd.txtcollect a list of dependencies that need to be installed on the Readthedocs build servers.
- The Doxygen documentation is configured directly from
- Configuration for CI/Code analysis/Documentation services
.github/workflows/ci.ymldescribes the Github Workflow for Continuous integration. For further reading on workflow files, we recommend the introduction into Github Actions and the reference of available options..readthedocs.ymlconfigures the documentation build process at ReadTheDocs. To customize your build, you can have a look at the available options.codecov.ymlconfigures the coverage checking from codecov.io. The provided file is the default configuration plus suitable exclusions. For more options, check their configuration reference.
- Markdown files with meta information on the project. Markdown 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.mdis the file that users will typically see first when discovering your project.COPYING.mdprovides a list of copyright holders.CITATION.cffprovides citation metadata so others know how to reference your project in publications.LICENSE.mdcontains the license you selected.TODO.mdcontains a list of TODOs for completing the setup of this software project. 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.mddescribes the generated files. Feel free to remove this from the repository if you do not need it.
- Other files
.gitignorecontains a default selection of files to omit from version control.