{"id":31556310,"url":"https://github.com/tomasmark79/dotnamecpp","last_synced_at":"2026-05-02T17:33:34.491Z","repository":{"id":316246014,"uuid":"1054092944","full_name":"tomasmark79/DotNameCpp","owner":"tomasmark79","description":"A keyboard-driven, CMake-based C++ template for VSCode. It automates the full dev cycle (configure, build, test, format, docs, package) via shortcuts and works cross-platform.","archived":false,"fork":false,"pushed_at":"2026-02-04T19:46:42.000Z","size":5483,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-05T07:48:16.720Z","etag":null,"topics":["boilerplate-template","cmake","compiler","conan","cpp","cross","cross-platform","emscripten","exe","gcc","modern-cpp","project-template","toolchain","vscode","wasm"],"latest_commit_sha":null,"homepage":"https://digitalspace.name","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tomasmark79.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-10T11:01:10.000Z","updated_at":"2026-02-04T19:46:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"52ba85b0-7e21-4671-8a84-44f62245fa6e","html_url":"https://github.com/tomasmark79/DotNameCpp","commit_stats":null,"previous_names":["tomasmark79/dotnamecpp"],"tags_count":5,"template":true,"template_full_name":null,"purl":"pkg:github/tomasmark79/DotNameCpp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomasmark79%2FDotNameCpp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomasmark79%2FDotNameCpp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomasmark79%2FDotNameCpp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomasmark79%2FDotNameCpp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tomasmark79","download_url":"https://codeload.github.com/tomasmark79/DotNameCpp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomasmark79%2FDotNameCpp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32543959,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T12:25:33.646Z","status":"ssl_error","status_checked_at":"2026-05-02T12:24:51.733Z","response_time":132,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["boilerplate-template","cmake","compiler","conan","cpp","cross","cross-platform","emscripten","exe","gcc","modern-cpp","project-template","toolchain","vscode","wasm"],"created_at":"2025-10-04T22:52:21.374Z","updated_at":"2026-05-02T17:33:34.473Z","avatar_url":"https://github.com/tomasmark79.png","language":"C++","funding_links":["https://paypal.me/TomasMark"],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"assets/DotNameCppLogo.svg\" width=\"100%\" alt=\"DotNameCpp Logo\"\u003e  \n\n\u003cspan id=\"linux-badge\"\u003e\u003ca href=\"https://github.com/tomasmark79/DotNameCpp/actions/workflows/linux.yml\"\u003e\u003cimg src=\"https://github.com/tomasmark79/DotNameCpp/actions/workflows/linux.yml/badge.svg?branch=main\" alt=\"\" onerror=\"document.getElementById('linux-badge').remove()\" style=\"border:0;\"\u003e\u003c/a\u003e\u003c/span\u003e \u003cspan id=\"linux-clang-badge\"\u003e\u003ca href=\"https://github.com/tomasmark79/DotNameCpp/actions/workflows/linux-clang.yml\"\u003e\u003cimg src=\"https://github.com/tomasmark79/DotNameCpp/actions/workflows/linux-clang.yml/badge.svg?branch=main\" alt=\"\" onerror=\"document.getElementById('linux-clang-badge').remove()\" style=\"border:0;\"\u003e\u003c/a\u003e\u003c/span\u003e \u003cspan id=\"linux-mingw-badge\"\u003e\u003ca href=\"https://github.com/tomasmark79/DotNameCpp/actions/workflows/linux-cross-mingw.yml\"\u003e\u003cimg src=\"https://github.com/tomasmark79/DotNameCpp/actions/workflows/linux-cross-mingw.yml/badge.svg?branch=main\" alt=\"\" onerror=\"document.getElementById('linux-mingw-badge').remove()\" style=\"border:0;\"\u003e\u003c/a\u003e\u003c/span\u003e \u003cspan id=\"linux-aarch64-badge\"\u003e\u003ca href=\"https://github.com/tomasmark79/DotNameCpp/actions/workflows/linux-cross-aarch64.yml\"\u003e\u003cimg src=\"https://github.com/tomasmark79/DotNameCpp/actions/workflows/linux-cross-aarch64.yml/badge.svg?branch=main\" alt=\"\" onerror=\"document.getElementById('linux-aarch64-badge').remove()\" style=\"border:0;\"\u003e\u003c/a\u003e\u003c/span\u003e \u003cspan id=\"macos-badge\"\u003e\u003ca href=\"https://github.com/tomasmark79/DotNameCpp/actions/workflows/macos.yml\"\u003e\u003cimg src=\"https://github.com/tomasmark79/DotNameCpp/actions/workflows/macos.yml/badge.svg?branch=main\" alt=\"\" onerror=\"document.getElementById('macos-badge').remove()\" style=\"border:0;\"\u003e\u003c/a\u003e\u003c/span\u003e \u003cspan id=\"windows-badge\"\u003e\u003ca href=\"https://github.com/tomasmark79/DotNameCpp/actions/workflows/windows.yml\"\u003e\u003cimg src=\"https://github.com/tomasmark79/DotNameCpp/actions/workflows/windows.yml/badge.svg?branch=main\" alt=\"\" onerror=\"document.getElementById('windows-badge').remove()\" style=\"border:0;\"\u003e\u003c/a\u003e\u003c/span\u003e \u003cspan id=\"emscripten-badge\"\u003e\u003ca href=\"https://github.com/tomasmark79/DotNameCpp/actions/workflows/emscripten.yml\"\u003e\u003cimg src=\"https://github.com/tomasmark79/DotNameCpp/actions/workflows/emscripten.yml/badge.svg?branch=main\" alt=\"\" onerror=\"document.getElementById('emscripten-badge').remove()\" style=\"border:0;\"\u003e\u003c/a\u003e\u003c/span\u003e\u003c!--[![discord](https://img.shields.io/discord/1220657359572172810?color=5865F2\u0026logo=discord\u0026logoColor=white)](https://discord.gg/4vkSjvvqSW) --\u003e\n\n# DotNameCpp — Advanced C++ Development Template\n\n\u003e 🌱 **Help Keep This Going** - Your support makes a real difference. If you value my work and want to help me continue creating, please consider making a donation. 💙 **Donate here:** [https://paypal.me/TomasMark](https://paypal.me/TomasMark) - Every contribution is truly appreciated ✨  \n\n## Time to Step Ahead\nGiven the cognitive complexity of the DotNameCpp template, I have decided to move forward and use native NixOS and Meson for configuring new C++ projects starting in 2026. [The new NixonCpp template is here](https://github.com/tomasmark79/NixonCpp).\n\n## Table of Contents\n\n- [Overview](#overview)\n- [Quick Start](#quick-start)\n- [VSCode Keyboard Workflow](#vscode-keyboard-workflow)\n- [Build Methods](#build-methods)\n- [Prerequisites](#prerequisites)\n- [Development Tools](#development-tools)\n- [Maintenance Scripts](#maintenance-scripts)\n- [License](#license)\n\n---\n\n## Overview\n**A keyboard-driven, CMake-based C++ template for VSCode**. It automates the full dev cycle (configure, build, test, format, docs, package) via shortcuts and works cross-platform.\n\n\u003e 🐧 **Primary Development Platform**: This template is now primarily developed on **NixOS**. Nix shell (`flake.nix` / `shell.nix`) provides a reproducible development environment with all required dependencies. For other distributions, standard package managers can be used.\n\n### Why?\n\n- **Keyboard-first**: One shortcut → structured task chain\n- **Modern stack**: CMake presets + Conan 2 + cross/wasm support\n- **Built-in quality**: clang-format, clang-tidy, coverage, Doxygen\n- **Dual target**: Reusable library + application\n\n---\n\n## Quick Start\n\n### [Open Doxygen Docs Online](https://tomasmark79.github.io/DotNameCpp/html/index.html)  \n\n\n### Clone Template\n\n```bash\ngit clone git@github.com:tomasmark79/DotNameCpp.git\n```\n\n**Quick clone with auto-rename** - add to your `.bashrc` / `.zshrc`:\n\n```bash\nclonedotname() {\n    local PN=\"${1:-DotNameCpp}\"\n    git clone git@github.com:tomasmark79/DotNameCpp.git \"$PN\" \u0026\u0026 \\\n    rm -rf \"$PN/.git\" \u0026\u0026 \\\n    cd \"$PN\" \u0026\u0026 \\\n    python SolutionRenamer.py DotNameLib \"$PN\"Lib DotNameApplication \"$PN\"App \u0026\u0026 \\\n    code .\n}\n```\n\nThen use: `clonedotname MyProject`\n\n### Recommended: VSCode Workflow\n\nOpen in VSCode and use keyboard shortcuts:\n\n```text\nShift+F7 → \"Zero to Hero\"    # Complete setup, build, test, package\nF7                              # Quick rebuild\nF5                              # Start debugging\n```\n\n\n### GitHub Codespaces\n\nClick **Code** → **Codespaces** → **Create codespace** on GitHub for instant cloud environment.\n\n---\n\n## VSCode Keyboard Workflow\n\nKeyboard-first development: every major action = shortcut → menu → deterministic scripted sequence.\n\n### Core Development Shortcuts\n\n| Shortcut | Action | Description |\n|----------|--------|-------------|\n| **F5** | Quick Debug | Start debugging application |\n| **F7** | Quick Build | Build application (default Debug) |\n| **Shift+F7** | Build Menu | **PRIMARY BUILD WORKFLOW** - Access all build tasks |\n| **Ctrl+F7** | Other Tasks | Utilities, formatting, documentation, coverage |\n| **Ctrl+Alt+R** | Run Application | Execute the built application binary |\n| **Ctrl+Alt+E** | Launch Emscripten | Build and serve WebAssembly version |\n| **Ctrl+Alt+P** | Build All Presets | Build all CMake presets |\n\n### Build Tasks Menu (Shift+F7)\n\nThe **primary development workflow** - this menu contains all essential build operations:\n\n- **Zero to Build**: Complete clean build workflow\n- **Zero to Hero**: Full development cycle (build, test, package)\n- **Conan Install**: Install/update dependencies\n- **CMake Configure**: Configure build system\n- **CMake Configure with Coverage**: Configure with code coverage\n- **Build**: Compile the project\n- **Run Tests**: Execute test suite\n- **Clean selected folder**: Clean build artifacts\n- **Install built components**: Install built components\n- **Create Tarballs**: Package for distribution\n\n### Utility Tasks Menu (Ctrl+F7)\n\nSecondary workflow for code quality and maintenance:\n\n- **Format Code**: Apply clang-format to all C++ files\n- **Format CMake**: Format all CMake files\n- **clang-tidy linting**: Run static analysis\n- **Generate Documentation**: Create Doxygen docs\n- **Coverage Tasks from Other Menu**: Quick access to coverage analysis\n- **Build All CMakeUserPresets.json**: Build all presets\n\n### Code Quality Shortcuts\n\n| Shortcut | Action | Description |\n|----------|--------|-------------|\n| **Ctrl+Alt+F** | Format Code | Run clang-format recursively on whole project |\n| **Ctrl+Alt+L** | Lint Code | Run clang-tidy analysis |\n| **Ctrl+Alt+M** | Format CMake | Run cmake-format recursively on CMake files |\n\n### Coverage Analysis Shortcuts\n\n| Shortcut | Action | Description |\n|----------|--------|-------------|\n| **Ctrl+Alt+Shift+C** | Configure with Coverage | Configure build with coverage enabled |\n| **Ctrl+Alt+H** | Coverage HTML Report | Generate and open HTML coverage report |\n| **Ctrl+Alt+Shift+H** | Coverage Full Report | Generate both HTML and XML coverage reports |\n| **Ctrl+Alt+T** | Coverage Tasks from Other Menu | Show detailed coverage task options |\n\n### Recommended Development Flow\n\n1. First run: `Shift+F7` → \"Zero to Hero\" (installs, configures, builds, tests, packages)\n2. Iterate: `F7` build → `F5` debug → edit → repeat\n3. Quality: `Ctrl+F7` utilities (format / tidy / docs)\n4. Tests: `Shift+F7` → \"Run Tests\"\n5. Coverage (native default only): `Ctrl+Alt+H`\n\n### Pro Tips\n\n- Shortcuts configurable via `.vscode/keybindings.json`\n- Works identically across Linux / macOS / Windows (and wasm where applicable)\n\n---\n\n## Build Methods\n\n### Method 1: VSCode Shortcuts (Recommended)\n\nUse the keyboard shortcuts detailed in the [VSCode Keyboard Workflow](#vscode-keyboard-workflow) section for a seamless development experience.\n\n\u003e **💡 Note:** All build operations are orchestrated by `SolutionController.py`, which handles Conan dependencies, CMake configuration, and build execution automatically. The raw commands shown in Method 2 are provided for reference and advanced users only - in normal workflow, you simply use VSCode shortcuts and the controller manages everything for you.\n\n### Method 2: CMake + Conan (Raw Commands)\n\n\u003e **⚠️ Advanced Users Only:** These raw commands are typically **not needed** - `SolutionController.py` (invoked via VSCode shortcuts) handles all of this automatically. Use these only for manual control, CI/CD pipelines, or understanding the build process internals.\n\n#### Native Builds\n\n```bash\n# Linux/macOS - Complete workflow\nconan install . --output-folder=build/application/default/debug \\\n  -s build_type=Debug -s compiler.cppstd=20 -pr default -b=missing\n\ncmake -B build/application/default/debug \\\n  -DCMAKE_TOOLCHAIN_FILE=build/application/default/debug/conan_toolchain.cmake \\\n  -DCMAKE_BUILD_TYPE=Debug \\\n  -DBUILD_LIBRARY=ON -DBUILD_APPLICATION=ON\n\ncmake --build build/application/default/debug --config Debug -j $(nproc)\nctest --test-dir build/application/default/debug\n```\n\n```powershell\n# Windows (PowerShell)\nconan install . --output-folder=build/application/default/debug `\n  -s build_type=Debug -s compiler.cppstd=20 -pr default -b=missing\n\ncmake -B build/application/default/debug `\n  -DCMAKE_TOOLCHAIN_FILE=build/application/default/debug/conan_toolchain.cmake `\n  -DCMAKE_BUILD_TYPE=Debug `\n  -DBUILD_LIBRARY=ON -DBUILD_APPLICATION=ON\n\ncmake --build build/application/default/debug --config Debug\nctest --test-dir build/application/default/debug\n```\n\n#### Cross-Compilation Examples\n\n```bash\n# Emscripten (WebAssembly)\nconan install . --output-folder=build/application/emscripten/debug \\\n  -s build_type=Debug -s compiler.cppstd=20 \\\n  -pr:host=emscripten -pr:build=default -b=missing\n\nsource build/application/emscripten/debug/conanbuild.sh\ncmake -B build/application/emscripten/debug \\\n  -DCMAKE_TOOLCHAIN_FILE=build/application/emscripten/debug/conan_toolchain.cmake \\\n  -DCMAKE_BUILD_TYPE=Debug \\\n  -DBUILD_LIBRARY=ON -DBUILD_APPLICATION=ON \\\n  -DPLATFORM=Web\n\ncmake --build build/application/emscripten/debug\n\n# MinGW (Windows cross-compile from Linux)\nconan install . --output-folder=build/application/x86_64_w64_mingw32/debug \\\n  -s build_type=Debug -s compiler.cppstd=20 \\\n  -pr:host=x86_64_w64_mingw32 -pr:build=default -b=missing\n\nsource build/application/x86_64_w64_mingw32/debug/conanbuild.sh\ncmake -B build/application/x86_64_w64_mingw32/debug \\\n  -DCMAKE_TOOLCHAIN_FILE=build/application/x86_64_w64_mingw32/debug/conan_toolchain.cmake \\\n  -DCMAKE_BUILD_TYPE=Debug \\\n  -DBUILD_LIBRARY=ON -DBUILD_APPLICATION=ON\n\ncmake --build build/application/x86_64_w64_mingw32/debug\n\n# ARM64/aarch64 (Raspberry Pi cross-compile from Linux)\nconan install . --output-folder=build/application/rpi4_glibc2.36_gcc12.4/debug \\\n  -s build_type=Debug -s compiler.cppstd=20 \\\n  -pr:host=rpi4_glibc2.36_gcc12.4 -pr:build=default -b=missing\n\nsource build/application/rpi4_glibc2.36_gcc12.4/debug/conanbuild.sh\ncmake -B build/application/rpi4_glibc2.36_gcc12.4/debug \\\n  -DCMAKE_TOOLCHAIN_FILE=build/application/rpi4_glibc2.36_gcc12.4/debug/conan_toolchain.cmake \\\n  -DCMAKE_BUILD_TYPE=Debug \\\n  -DBUILD_LIBRARY=ON -DBUILD_APPLICATION=ON\n\ncmake --build build/application/rpi4_glibc2.36_gcc12.4/debug\n```\n\n#### Build Type Variations\n\n```bash\n# Release build\nconan install . --output-folder=build/application/default/release \\\n  -s build_type=Release -s compiler.cppstd=20 -pr default -b=missing\n\ncmake -B build/application/default/release \\\n  -DCMAKE_TOOLCHAIN_FILE=build/application/default/release/conan_toolchain.cmake \\\n  -DCMAKE_BUILD_TYPE=Release \\\n  -DBUILD_LIBRARY=ON -DBUILD_APPLICATION=ON\n\ncmake --build build/application/default/release --config Release\n\n# Release with Debug Info\nconan install . --output-folder=build/application/default/relwithdebinfo \\\n  -s build_type=RelWithDebInfo -s compiler.cppstd=20 -pr default -b=missing\n\ncmake -B build/application/default/relwithdebinfo \\\n  -DCMAKE_TOOLCHAIN_FILE=build/application/default/relwithdebinfo/conan_toolchain.cmake \\\n  -DCMAKE_BUILD_TYPE=RelWithDebInfo \\\n  -DBUILD_LIBRARY=ON -DBUILD_APPLICATION=ON\n\ncmake --build build/application/default/relwithdebinfo\n\n# Minimum Size Release\nconan install . --output-folder=build/application/default/minsizerel \\\n  -s build_type=MinSizeRel -s compiler.cppstd=20 -pr default -b=missing\n\ncmake -B build/application/default/minsizerel \\\n  -DCMAKE_TOOLCHAIN_FILE=build/application/default/minsizerel/conan_toolchain.cmake \\\n  -DCMAKE_BUILD_TYPE=MinSizeRel \\\n  -DBUILD_LIBRARY=ON -DBUILD_APPLICATION=ON\n\ncmake --build build/application/default/minsizerel\n```\n\n#### Advanced Options\n\n```bash\n# Code coverage (native Debug builds only)\nconan install . --output-folder=build/application/default/debug \\\n  -s build_type=Debug -s compiler.cppstd=20 -pr default -b=missing\n\ncmake -B build/application/default/debug \\\n  -DCMAKE_TOOLCHAIN_FILE=build/application/default/debug/conan_toolchain.cmake \\\n  -DCMAKE_BUILD_TYPE=Debug \\\n  -DBUILD_LIBRARY=ON -DBUILD_APPLICATION=ON \\\n  -DENABLE_COVERAGE=ON\n\ncmake --build build/application/default/debug\nctest --test-dir build/application/default/debug\ngcovr --html-details coverage.html --root .\n\n# With sanitizers (Debug only)\ncmake -B build/application/default/debug \\\n  -DCMAKE_TOOLCHAIN_FILE=build/application/default/debug/conan_toolchain.cmake \\\n  -DCMAKE_BUILD_TYPE=Debug \\\n  -DBUILD_LIBRARY=ON -DBUILD_APPLICATION=ON \\\n  -DSANITIZER_MODE=3  # ASAN + UBSAN\n\n# With Link-Time Optimization (Release builds)\ncmake -B build/application/default/release \\\n  -DCMAKE_TOOLCHAIN_FILE=build/application/default/release/conan_toolchain.cmake \\\n  -DCMAKE_BUILD_TYPE=Release \\\n  -DBUILD_LIBRARY=ON -DBUILD_APPLICATION=ON \\\n  -DENABLE_IPO=ON\n\n# With hardening enabled\ncmake -B build/application/default/release \\\n  -DCMAKE_TOOLCHAIN_FILE=build/application/default/release/conan_toolchain.cmake \\\n  -DCMAKE_BUILD_TYPE=Release \\\n  -DBUILD_LIBRARY=ON -DBUILD_APPLICATION=ON \\\n  -DENABLE_HARDENING=ON\n\n# Library only build\nconan install . --output-folder=build/library/default/debug \\\n  -s build_type=Debug -s compiler.cppstd=20 -pr default -b=missing\n\ncmake -B build/library/default/debug \\\n  -DCMAKE_TOOLCHAIN_FILE=build/library/default/debug/conan_toolchain.cmake \\\n  -DCMAKE_BUILD_TYPE=Debug \\\n  -DBUILD_LIBRARY=ON -DBUILD_APPLICATION=OFF\n\ncmake --build build/library/default/debug\n```\n\n#### Utility Commands\n\n```bash\n# List available CMake presets\ncmake --list-presets\n\n# Clean build\nrm -rf build/application/default/debug\ncmake --build build/application/default/debug --target clean\n\n# Install built artifacts\ncmake --install build/application/default/debug --prefix install\n\n# Create distribution package\ncd build/application/default/debug\ncpack -G TGZ\n\n# Run specific test\nctest --test-dir build/application/default/debug -R TestName\n\n# Verbose build output\ncmake --build build/application/default/debug --verbose\n\n# Show Conan profile\nconan profile show --profile default\nconan profile show --profile x86_64_w64_mingw32\n```\n\n### Build Options\n\n```cmake\noption(ENABLE_GTESTS \"Build and run unit tests\" ON)\noption(ENABLE_CCACHE \"Use ccache compiler cache\" ON)\noption(ENABLE_COVERAGE \"Enable code coverage analysis\" OFF)\noption(ENABLE_IPO \"Enable link-time optimization\" OFF)\noption(ENABLE_HARDENING \"Enable security hardening\" OFF)\n\n# Sanitizer configuration\n# SANITIZER_MODE values:\n#   0 = None           - No sanitizers\n#   1 = ASAN           - Address Sanitizer\n#   2 = UBSAN          - Undefined Behavior Sanitizer\n#   3 = ASAN + UBSAN   - Address + Undefined\n#   4 = TSAN           - Thread Sanitizer\n#   5 = TSAN + UBSAN   - Thread + Undefined\n# Note: ASAN and TSAN are mutually exclusive\nset(SANITIZER_MODE 0 CACHE STRING \"Sanitizer mode (0-5)\")\n```\n\n---\n\n## Prerequisites\n\n### Essential Tools\n\n| Tool | Minimum Version | Purpose | Installation |\n|------|----------------|---------|--------------|\n| **Git** | 2.25+ | Version control | [Download](https://git-scm.com/downloads) |\n| **CMake** | 3.31+ | Build system | [Download](https://cmake.org/download/) |\n| **Conan** | 2.0+ | Package manager | `pip install conan` |\n| **Python** | 3.8+ | Automation scripts | [Download](https://python.org) |\n| **Ninja** | 1.10+ | Build tool | [Download](https://ninja-build.org/) |\n| **VSCode** | Latest | IDE | [Download](https://code.visualstudio.com/) |\n\n\n### Recommended Tools\n\n| Tool | Purpose | Installation |\n|------|---------|--------------|\n| **ccache** | Compilation cache | [Download](https://ccache.dev/download.html) |\n| **clang-tidy** | Static analysis | Part of LLVM |\n| **clang-format** | Code formatting | Part of LLVM (base config: `clang-format -style=llvm -dump-config \u003e .clang-format` + small individual adjustments) |\n| **cmake-format** | CMake formatting | `pip install cmake-format` |\n| **Doxygen** | Documentation | [Download](https://www.doxygen.nl/download.html) |\n| **gcovr** | Code coverage | `pip install gcovr` |\n| **Emscripten** | WebAssembly compilation | [Download](https://emscripten.org/docs/getting_started/downloads.html) |\n\n\n### Supported Compilers\n\n| Platform | Compilers | Versions |\n|----------|-----------|----------|\n| **Linux** | GCC, Clang | GCC 11+, Clang 14+ |\n| **macOS** | Clang, GCC | Xcode 14+, GCC 11+ |\n| **Windows** | MSVC, Clang, GCC | VS 2022, Clang 14+, MinGW 11+ |\n| **Emscripten** | emcc | 3.1.0+ |\n\n### CMake Dependencies (Forked for Stability)\n\n\nThis project uses forked versions of key CMake utilities hosted on the maintainer's GitHub for future stability and version control:\n\n- **[CPM.cmake](https://github.com/tomasmark79/CPM.cmake)** - CMake package manager for automated dependency fetching\n\u003e **Useful CMake Snippets** Check out [useful CMake snippets](cmake/useful-cmake-snippets.md) for integrating popular libraries using CPM.cmake.\n- **[PackageProject.cmake](https://github.com/tomasmark79/PackageProject.cmake)** - CMake library packaging and installation helper\n- **[CPMLicenses.cmake](https://github.com/tomasmark79/CPMLicenses.cmake)** - Automated third-party license collection\n\n\u003e **Note:** These forks ensure long-term stability and allow for custom modifications if upstream changes break compatibility. The original projects are properly credited in respective repositories.\n\n \n---\n\n## Development Tools\n\n**Static Analysis**: `Ctrl+Alt+L` (clang-tidy - requires build artifacts)  \n**Code Formatting**: `Ctrl+Alt+F` (C++), `Ctrl+Alt+M` (CMake)  \n**Documentation**: `Ctrl+F7` → \"Generate Documentation\" (Doxygen)  \n**Code Coverage**: `Ctrl+Alt+H` (native builds only)\n\n---\n\n## Maintenance Scripts\n\n#### SolutionRenamer.py\nRename project from template defaults:\n\n```bash\npython3 SolutionRenamer.py DotNameLib NewAwesomeLib DotNameApplication NewAwesomeApplication\n```\n\n#### SolutionUpgrader.py\nSync files from upstream template:\n\n```bash\npython SolutionUpgrader.py -i    # Interactive mode\npython SolutionUpgrader.py -c    # Check for updates\npython SolutionUpgrader.py -u README.md  # Update specific file\n```\n\n#### SolutionController.py\nCentral automation hub (normally accessed via VSCode shortcuts):\n\n```bash\npython SolutionController.py \u003cproduct\u003e \"\u003ctask\u003e\" \u003carch\u003e [build_type]\n\n# Examples:\npython SolutionController.py application \"Build\" default Debug\npython SolutionController.py both \"Zero to Hero\" default Release\n```\n\n---\n\n## License\n\n**MIT License**  \nCopyright (c) 2024–2026 Tomáš Mark\n\n---\n\n## Important Notes\n\n- **Coverage**: Native `default` Debug builds only\n- **Emscripten**: Requires appropriate Conan profile (not auto-installed)\n- **Cross-compilation**: Conan profiles must be created manually\n- **CI/CD**: See badges at top for current build status\n\nFor support: [Open an issue](https://github.com/tomasmark79/DotNameCpp/issues) · [Discussions](https://github.com/tomasmark79/DotNameCpp/discussions)\n\n---\n\n**Happy coding!**\n\n[Back to top](#dotnamecpp--advanced-c-development-template)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomasmark79%2Fdotnamecpp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftomasmark79%2Fdotnamecpp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomasmark79%2Fdotnamecpp/lists"}