- CMake files
- CTest unit tests framework
- Github Actions that build and run the tests
- Scripts and VSCode files for ease of use
- Dockerfile for building and running the tests in a container
- Support for compiler cache tools: ccache and sccache
- Formatting via clang-format (that runs automatically in a git pre-commit hook)
- CMake
- Clang
- LLDB
- clang-format
- (optional for compiler cache) ccache
- (optional for IDE debugging) VSCode 'CodeLLDB' extension
- (only on Windows) MSVC compiler
Execute VSCode task build_cmake_debug
or run this script:
./projectFolder/scripts/build_cmake_debug.sh
This needs to run the first time and any time you make
changes to a CMake file or add new source or test files.
Execute VSCode task build_debug
or run this script:
./projectFolder/scripts/build_debug.sh
To build for release execute VSCode task create_release
or run this script:
./projectFolder/scripts/create_release.sh
All the artifacts will be in the build/ directory.
Launch VSCode DEBUG
configuration for IDE debugging.
If you want to debug in the command line run:
lldb ./build/Debug/bin/cpp-cmake-template
Execute VSCode task run_tests
or run this script:
./projectFolder/scripts/run_tests.sh
If you want to build and run the tests in a fresh Docker container
execute VSCode task run_tests_in_Docker
or run this script:
./projectFolder/scripts/run_tests_in_Docker.sh
Add any new source file to a projectFolder/src/dir
directory.
You can create any new projectFolder/src/dir
directories.
Add any new test file to the projectFolder/tests
directory.
Both these operations does not require any changes to CMake files.
Remember to re-run build_cmake_debug
after you have added new files or directories.
Use the same VSCode tasks listed above or run the scripts in
this directory: projectFolder/scripts/windows
.
- Fix Windows built files path
- Static checker (BASH and cpp)
- E2E tests (other than just building, also running the binary to see if there are any run-time errors)
- CMake
install
to install the release build in the system - Better support for 3rd parties libraries