Where to find what inside the project, from folder structure to configuration.
All relevant source code is located in src/
. The example setup is having one library, here called "Core"
under src/core/
, and the application called "App" under src/app/
.
The test setup is done under src/tests/
. Test implementations are under the respective source code unit, e.g. App
tests would be located under src/app/Tests/
, where Core tests are located under src/core/Tests/
.
Static assets like fonts and images are under src/assets/
. This also includes all application icons
in src/assets/icons/
.
Manifest files contain operating system dependent configuration. They all are located under src/app/Manifests/
.
src/app/Manifests/Info.plist
- Apple properties file (ref)src/app/Manifests/App.manifest
- Windows manifest file (ref)src/app/Manifests/app.rc
- Windows resource file (ref)src/app/Manifests/App.desktop.in
- Linux app icon configuration (ref)
Generally dependencies are located in vendor/
. The vendor/CMakeLists.txt
uses
CMake's FetchContent to load dependencies on configure
time. Every dependency also has an associated folder containing a CMakeLists.txt
for configuration.
General CMake project settings are defined under cmake/StandardProjectSettings.cmake
, containing build types and
compiler flags.
Compiler warnings for all platforms are defined in cmake/CompilerWarnings.cmake
.
Clang Tidy and Address Sanitizer setup is located in cmake/StaticAnalyzers.cmake
. Clang-tidy is configured
through .clang-tidy
.
In the root of the project a .clang-format
together with the .editorconfig
define the code style of the project.
To configure how to build for Apple Silicon or Intel the cmake/UniversalAppleBuild.cmake
defines the behavior on
release builds.
The main configuration to create distributable packages is in packaging/
. Besides general files it also contains
platform dependent resources.
packaging/dmg/
- Apple DMG filespackaging/nsis/
- Windows NSIS files
Under src/app/cmake/
are specific packaging files for the main executable.
Next up: Make it your own