This is an explanation of the file structure that the cookiecutter generated for you:
- C++ source files:
include/agent/agent.hppis the main C++ header that declares the interface of your library.src/agent.cppis the main file that implements this library.app/agent_app.cppis an executable that uses the library. This can e.g. be used to provide a command line interface for your project.tests/agent_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.tests/tests.cppis 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.python/agent_python.cppis the source file that contains the Pybind11 code to generate the Python package.
- 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.
- The
extdirectory contains any submodules that were added by the cookiecutter. - 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.LICENSE.mdcontains the license you selected.TODO.mdcontains 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.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..gitmodulestracks the state of added submodulessetup.pydescribes the Python package build process. This file enables you to also install your software using e.g.pip.Additionally, this file is needed for the automated release process to PyPI..github/workflows/pypi.ymldefines the workflow that deploys to PyPI.python/tests/test_python_bindings.pyandpython/pytest.inidefine a simple unit test suite for the Python bindings that is based on Pytest.requirements-dev.txtcollects the required Python packages for running this test suite, they can be installed withpython -m pip install -r requirements-dev.txt.