
Repo-Init is a powerful, production-ready CMake template designed to kickstart your C++ applications with enterprise-grade features built-in. Say goodbye to boilerplate code and hello to modern, robust software development!
๐ง Requires: C++17 supported compiler
๐ก Perfect for: Microservices, CLI tools, system applications, and performance-critical software
๐ก๏ธ Crash ProtectionAutomatic minidump generation with Crashpad Never lose critical debugging information | ๐ Advanced LoggingMulti-output logging with Spdlog File rotation โข Syslog โข Colorized console | ๐ Service IntegrationSentry โข Grafana Loki โข Prometheus Real-time monitoring & alerting |
โก Performance Metrics
| ๐ Network Ready | ๐ Developer Experience
|
๐ฌ Questions? Issues? Contributions? Feel free to ask, use, and report any bugs you encounter! We โค๏ธ community feedback.
Our carefully crafted CMake modules provide powerful build automation:
| Module | ๐ฏ Purpose | โจ Benefits |
|---|---|---|
| CodeCoverage | Detects and enables gcovr | Automatic test coverage reports |
| CompilerSecurityOptions | Enables/Disables secure compiler flags | Hardened binary security |
| Doxy | Finds Doxygen package and prepares docs | Auto-generated documentation |
| GenerateSymbols | Adds target for symbol file generation | Enhanced debugging with minidumps |
| GitVersion | Gets SHA1 hash of current commit | Version tracking and build reproducibility |
| GraphViz | Finds GraphViz and dot executable | Visual dependency graphs |
๐ก Tip: All scripts should be executed from the top-level directory
| Script | ๐ Function | ๐ Description |
|---|---|---|
firstName.sh | Name Changer | Replaces placeholder names throughout the project |
crashpad_manual_upload.py | Manual Minidump Uploader | Uploads bulk of minidump files in given directory |
dump_syms.py | Symbol Dumper | Generates symbol files for crash analysis |
Integrated DependenciesBuilt and bundled automatically
| Development DependenciesFor building and testing only
System DependenciesInstall via package manager (apt/dnf/brew) |
๐ Want to see the full picture? Check out our complete dependency graph!
Our test suite requires some Python dependencies for comprehensive testing. Here's how to set them up:
๐ Quick Setup | ๐ Required Dependencies
โ ๏ธ Important Notes
|
| Target | ๐ Command | ๐ Description |
|---|---|---|
| all | cmake --build . | Builds the complete project with all components |
| coverage | cmake --build . --target coverage | Generates comprehensive test coverage reports |
| docs | cmake --build . --target docs | Creates beautiful documentation with Doxygen |
| dependency-graph | cmake --build . --target dependency-graph | Visualizes project dependencies with GraphViz |
| package | cmake --build . --target package | Creates distribution packages (DEB/RPM + systemd service) |
| test | ctest . --parallel | Runs the complete test suite with GoogleTest |
๐ก Pro Tips:
- For packages, specify your preferred format with
-DCPACK_GENERATOR="DEB"or"RPM"- Ensure Python virtual environment is activated before running tests!
๐ก Important: Re-run CMake configuration (
cmake -B build) after changing any options
| Option | Description | Default | ๐ฏ Use Case |
|---|---|---|---|
XXX_BUILD_TESTS | Build all test suites | ON | Complete testing pipeline |
XXX_BUILD_UNITTESTS | Build unit tests only | ON | Fast development feedback |
XXX_BUILD_FUZZTESTS | Build fuzz testing suite | OFF | Security & robustness testing |
XXX_ENABLE_COVERAGE | Generate test coverage reports | OFF | Code quality metrics |
XXX_ENABLE_MEMLEAK_CHECK | Memory leak detection with MemPlumber | OFF | Debug memory issues |
| Option | Description | Default | Use Case |
|---|---|---|---|
XXX_ENABLE_SYMBOL_GENERATION | Generate debug symbols for crash dumps | OFF | Production debugging |
XXX_ENABLE_PACKAGING | Enable DEB/RPM packaging with systemd | OFF | Distribution & deployment |
๐ Quick Setup
โจ What You Get
| ๐ธ Live Dashboard Preview Beautiful, responsive, and information-rich monitoring |