All Projects → ssciwr → cookiecutter-cpp-project

ssciwr / cookiecutter-cpp-project

Licence: MIT, Unknown licenses found Licenses found MIT LICENSE.md Unknown COPYING.md
A cookiecutter for a C++ Project with lots of configuration options

Programming Languages

python
139335 projects - #7 most used programming language
CMake
9771 projects
C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to cookiecutter-cpp-project

bx-github-ci
This tutorial provides one example on how a CI (Continuous Integration) workflow with the IAR Build Tools for Linux can be set up on GitHub. The IAR Build Tools on Linux are available for Arm, RISC-V and Renesas (RH850, RL78 and RX).
Stars: ✭ 20 (-20%)
Mutual labels:  ci
prettier
🔨 Native, blazingly-fast Prettier CLI on Github Actions
Stars: ✭ 19 (-24%)
Mutual labels:  ci
xray-action
... a GitHub action to import test results into "Xray" - A complete Test Management tool for Jira.
Stars: ✭ 16 (-36%)
Mutual labels:  ci
howtheydevops
A curated collection of publicly available resources on how companies around the world practice DevOps
Stars: ✭ 318 (+1172%)
Mutual labels:  ci
std-env
Detect current Javascript environment
Stars: ✭ 85 (+240%)
Mutual labels:  ci
micromamba-docker
Rapid builds of small Conda-based containers using micromamba.
Stars: ✭ 97 (+288%)
Mutual labels:  ci
wordpress-skeleton
A base repository structure for rtCamp's WordPress sites, pre-configured to use Github Actions
Stars: ✭ 32 (+28%)
Mutual labels:  ci
AzDo.VstsDashboard
Provide a simple way to view all Builds and Releases on a single page. The intend was to see what's currently happened into the CI/CD pipeline and provide quick feedback of what's going on.
Stars: ✭ 16 (-36%)
Mutual labels:  ci
branch-protection-bot
A bot tool to disable and re-enable "Include administrators" option in branch protection
Stars: ✭ 57 (+128%)
Mutual labels:  ci
buildservice
Project build service using node, CI script
Stars: ✭ 21 (-16%)
Mutual labels:  ci
webpack-bundle-delta
Get insights into your webpack v4 bundles as early as possible.
Stars: ✭ 17 (-32%)
Mutual labels:  ci
python-test-reporter
DEPRECATED Uploads Python test coverage data to Code Climate
Stars: ✭ 18 (-28%)
Mutual labels:  ci
devops-guidebook
📚 DevOps 知识图谱 关于Linux、服务器、数据库、部署等相关体系
Stars: ✭ 25 (+0%)
Mutual labels:  ci
flow-platform-x
Continuous Integration Platform
Stars: ✭ 21 (-16%)
Mutual labels:  ci
OneStack
IT管理系统,实现自动化运维,整合CMDB和监控,实现自动化部署,打通开发、运维和测试的边界,实现一栈式管理。
Stars: ✭ 73 (+192%)
Mutual labels:  ci
CI-Report-Converter
The tool converts different error reporting standards for deep compatibility with popular CI systems (TeamCity, IntelliJ IDEA, GitHub Actions, etc).
Stars: ✭ 17 (-32%)
Mutual labels:  ci
django-template
The ultimate Django template: production ready Django 3.2 with Docker, HTTPS and CI/CD using Github actions ‎️‍🔥
Stars: ✭ 20 (-20%)
Mutual labels:  cookiecutter
jinja2-git
Jinja2 extension to handle git-specific things
Stars: ✭ 12 (-52%)
Mutual labels:  cookiecutter
ncc
Neural Code Comprehension: A Learnable Representation of Code Semantics
Stars: ✭ 162 (+548%)
Mutual labels:  code-analysis
AndroidFastlaneCICD
📱A sample repository to demonstrate the Automate publishing🚀 app to the Google Play Store with GitHub Actions⚡+ Fastlane🏃.
Stars: ✭ 82 (+228%)
Mutual labels:  ci

Welcome to C++ Project Cookiecutter!

This repository is a template repository (a cookiecutter) that allows you to quickly set up new CMake-based C++ projects. If you are new to C++ and CMake, you might want to checkout our simpler C++ template repository.

Features

The core features of our C++ Cookiecutter in a nutshell:

  • Very simple, configurable setup of a fully functional C++ project
  • Modern CMake implementation based on targets
  • Choose and add a license and copyright statement to your project
  • Ready-to-use integration with the Github Actions and Gitlab CI
  • Generation and deployment of Sphinx-based documentation for Read the Docs
  • Building a Doxygen documentation
  • Setup of Python bindings with Pybind11
  • CI-based deployment of Python wheels to PyPI
  • Integration with coverage testing from codecov.io
  • Integration with code quality analysis from sonarcloud.io
  • Based on an established tool: Cookiecutter has >15k stars on Github!

Prerequisites

In order to use this C++ Project Cookiecutter you need the following software installed:

  • Python >= 3.6
  • Cookiecutter e.g. by doing pip install cookiecutter.
  • Git >= 1.8.2

In addition, the project that is generated from this cookiecutter will require the following software:

  • A C++ compiler, e.g. g++ or clang++
  • CMake >= 3.9
  • Doxygen (optional, but recommended)

Using C++ Project Cookiecutter

Simply run the cookiecutter command line interface:

cookiecutter gh:ssciwr/cookiecutter-cpp-project

This will start an interactive prompt that will configure and generate your project. One of the prompts will ask you for a remote repository URL, so you should head to the Git hosting service of your choice and add a new empty repository e.g. on Github.

Configuration

This cookiecutter accepts the following configuration options:

  • project_name: The human-readable name of the project, defaults to My C++ Project
  • remote_url: The remote URL for the newly created repository. This is not only used to add it as a remote to the Git repository, but also to enable integration with some services. Defaults to None although we strongly advise you to specify it.
  • project_slug: This will be the name of the generated directory. By default, it is deduced from the specified remote URL and the given project name.
  • full_name: Author name, defaults to Your Name
  • license adds a license file to the repository. It can be chosen from MIT (default), BSD-2, GPL-3.0, LGPL-3.0 or it can be omitted.
  • use_submodules: Whether git submodule should be used to add version-pinned external dependencies (like e.g. the testing framework Catch2). If you do not know what git submodules are, you should select No.
  • header_only: Whether the C++ project is header-only. If No is selected, a library will be added to the project. In both cases, a target is exported that dependent projects can link against.
  • github_actions_ci: Whether to add a CI workflow for Github Actions
  • gitlab_ci: Whether to add a CI workflow for GitLab CI
  • readthedocs: Whether to create a Sphinx-documentation that can automatically be deployed to readthedocs.org
  • doxygen: Whether a Doxygen documentation should be extracted from the project
  • cxx_minimum_standard: The minimum C++ standard required for this project. It can be chosen from 11 (default), 14, 17 and 20. C++03 and earlier are not supported, because the generated project will depend on libraries that require C++11 (Catch2 for testing and pybind11 for potential Python bindings).
  • python_bindings: Whether to automatically add a PyBind11-based Python binding package.
  • pypi_release: Whether to add an automatic PyPI deploy workflow to the CI system. This is currently limited to Github Actions CI as it provides cloud-based runners for all relevant platforms (Linux, MacOS, Windows). A PyPI release is automatically triggered when a release is generated in the Github UI.
  • codecovio: Whether an automatic integration with coverage checking from codecov.io should be set up. This requires an Open Source license in order to be free to use.
  • sonarcloud: Whether an automatic integration with code quality analysis from sonarcloud.io should be set up. Sonarcloud requires an Open Source license in order to be free to use. This feature requires a bit of setup, but will give you access to a very powerful code analysis tool. Currently, we only support SonarCloud analysis in combination with Github Actions CI and a Github remote repository.

If you are using cookiecutter-cpp-project a lot, you can customize your default values by providing a .cookiecutterrc file in your home directory, for more details see the cookiecutter documentation.

Issues

Please report any issues you might have with template using the Github issue tracker

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].