# friendlyanon/cmake-init

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/friendlyanon-cmake-init).**

2,488 stars · 93 forks · CMake · gpl-3.0

## Links

- GitHub: https://github.com/friendlyanon/cmake-init
- awesome-repositories: https://awesome-repositories.com/repository/friendlyanon-cmake-init.md

## Topics

`boilerplate` `c` `ci` `clang-format` `clang-tidy` `cmake` `codespell` `conan` `coverage` `cpp` `cppcheck` `executable` `header-only` `python` `scaffolding` `shared-library` `static-analysis` `static-library` `testing` `vcpkg`

## Description

cmake-init is a project generator and build system boilerplate designed to automate the initialization of C++ projects. It provides a framework for creating standardized project layouts and build configurations through template-based generation and user-defined prompts.

The project functions as a development workflow automator, integrating static analysis, code formatting, and documentation generation directly into the build pipeline. It includes a dependency management system for vendoring external libraries and managing transitive dependencies to ensure consistent package discovery for downstream consumers.

The system further covers software quality assurance through code coverage tracking and the automation of source code formatting. It also provides mechanisms for bundling multiple installation packages from a single source tree and extracting technical documentation from source code comments.

## Tags

### Development Tools & Productivity

- [C-Family Development Workflows](https://awesome-repositories.com/f/development-tools-productivity/c-family-development-workflows.md) — Automates the C++ development workflow by unifying static analysis, formatting, and documentation within the build system.
- [Project Templates](https://awesome-repositories.com/f/development-tools-productivity/project-scaffolding-config-code-generation/project-scaffolding-configuration/project-scaffolding/project-templates.md) — Provides pre-configured blueprints for creating standardized C++ project structures and boilerplate.
- [Dependency Vendors](https://awesome-repositories.com/f/development-tools-productivity/dependency-managers/installation-resolution-utilities/dependency-installers/dependency-download-optimizers/dependency-vendors.md) — Archives external dependency source code locally to support consistent package discovery and offline builds. ([source](https://github.com/friendlyanon/cmake-init/wiki/Examples))
- [Source Vendoring](https://awesome-repositories.com/f/development-tools-productivity/dependency-managers/package-registry-integrations/external-server-package-registries/source-vendoring.md) — Provides a mechanism for vendoring external third-party libraries to ensure consistent package discovery.
- [Dependency Management](https://awesome-repositories.com/f/development-tools-productivity/development-environment-management/development-environments/language-specific-tooling/c-development-environments/dependency-management.md) — Provides tooling for retrieving and integrating external libraries specifically within C++ development environments.
- [Package Dependency Managers](https://awesome-repositories.com/f/development-tools-productivity/package-dependency-managers.md) — Connects the CMake build system to external package managers for simplified retrieval and linking of libraries. ([source](https://cdn.jsdelivr.net/gh/friendlyanon/cmake-init@master/README.md))
- [C++ Project Templates](https://awesome-repositories.com/f/development-tools-productivity/project-bootstrapping-tools/c-project-templates.md) — Provides standardized configurations and scaffolding for initializing C++ libraries and executables using CMake.
- [Project Generators](https://awesome-repositories.com/f/development-tools-productivity/project-generators.md) — Automates the creation of initial project structures, boilerplate code, and CMake configuration files. ([source](https://cdn.jsdelivr.net/gh/friendlyanon/cmake-init@master/README.md))
- [Project Initializers](https://awesome-repositories.com/f/development-tools-productivity/project-initializers.md) — Bootstraps new C++ projects with a relocatable structure and target definitions for developers and consumers. ([source](https://cmake-init.readthedocs.io/))
- [Build-Time Tooling](https://awesome-repositories.com/f/development-tools-productivity/build-tooling/build-time-tooling.md) — Integrates external formatting and linting binaries directly into the build phase to enforce code quality.
- [Inline Documentation Extractors](https://awesome-repositories.com/f/development-tools-productivity/plugin-generators/inline-documentation-extractors.md) — Extracts inline comments from source files to generate formatted technical documentation.

### DevOps & Infrastructure

- [CMake Integrations](https://awesome-repositories.com/f/devops-infrastructure/cicd-pipeline-automation/core-build-engines/build-systems/cmake-integrations.md) — Automates the build pipeline by integrating linting, formatting, and testing directly into the CMake configuration.
- [Boilerplates](https://awesome-repositories.com/f/devops-infrastructure/cicd-pipeline-automation/core-build-engines/build-systems/cmake-integrations/boilerplates.md) — Offers a comprehensive set of predefined structures for managing C++ libraries and executables with built-in installation logic.

### Software Engineering & Architecture

- [Project Structures](https://awesome-repositories.com/f/software-engineering-architecture/project-structures.md) — Generates standardized folder layouts for executables and libraries to ensure consistent project organization. ([source](https://github.com/friendlyanon/cmake-init/wiki/Examples))
- [Dependency Requirement Propagation](https://awesome-repositories.com/f/software-engineering-architecture/state-synchronization-patterns/context-state-propagators/infrastructure-data-propagators/configuration-propagators/dependency-requirement-propagation.md) — Tracks library requirements through build targets to ensure all transitive dependencies are propagated to consumers.
- [CMake-Based Managers](https://awesome-repositories.com/f/software-engineering-architecture/library-compatibility-managers/library-dependency-managers/cmake-based-managers.md) — Implements a system for vendoring external libraries and managing transitive dependencies within the CMake ecosystem.

### Part of an Awesome List

- [Code Formatting](https://awesome-repositories.com/f/awesome-lists/devtools/code-formatting.md) — Automates source code formatting and style enforcement by running linting tools during the build. ([source](https://cdn.jsdelivr.net/gh/friendlyanon/cmake-init@master/README.md))

### Content Management & Publishing

- [Documentation Generators](https://awesome-repositories.com/f/content-management-publishing/content-management-systems/content-architecture-modeling/documentation-tooling/generation-publishing/documentation-generators.md) — Generates technical documentation by extracting and formatting information from source code comments. ([source](https://cdn.jsdelivr.net/gh/friendlyanon/cmake-init@master/README.md))

### Programming Languages & Runtimes

- [Documentation Generation](https://awesome-repositories.com/f/programming-languages-runtimes/documentation-generation.md) — Automates the extraction of comments and contracts from C++ source code to produce structured technical documentation.

### Testing & Quality Assurance

- [Code Coverage Analysis](https://awesome-repositories.com/f/testing-quality-assurance/code-coverage-analysis.md) — Processes execution data through analysis tools to track code coverage and identify untested paths. ([source](https://cdn.jsdelivr.net/gh/friendlyanon/cmake-init@master/README.md))
- [Code Quality Tools](https://awesome-repositories.com/f/testing-quality-assurance/code-quality-review/code-quality-tools.md) — Integrates static analysis and code coverage tools to ensure high software quality during the build process.
- [Static Code Analysis](https://awesome-repositories.com/f/testing-quality-assurance/static-code-analysis.md) — Integrates static analysis tools into the build pipeline to detect logical errors and common bugs. ([source](https://cdn.jsdelivr.net/gh/friendlyanon/cmake-init@master/README.md))
