All Projects → abdes → asap

abdes / asap

Licence: BSD-3-Clause License
A cmake starter project for C++ with basic infrastructure including platform detection, compiler detection, assertions..., and a complete build lifecycle. Portable across Linux, OS X and Windows.

Programming Languages

CMake
9771 projects
HTML
75241 projects
shell
77523 projects
Dockerfile
14818 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to asap

nitroml
NitroML is a modular, portable, and scalable model-quality benchmarking framework for Machine Learning and Automated Machine Learning (AutoML) pipelines.
Stars: ✭ 40 (+2.56%)
Mutual labels:  modular, portable
Go Script Bash
Framework for writing modular, discoverable, testable Bash scripts
Stars: ✭ 77 (+97.44%)
Mutual labels:  modular, portable
Ocaml Containers
A lightweight, modular standard library extension, string library, and interfaces to various libraries (unix, threads, etc.) BSD license.
Stars: ✭ 367 (+841.03%)
Mutual labels:  modular, portable
build
Build system scripts based on GENie (https://github.com/bkaradzic/genie) project generator
Stars: ✭ 30 (-23.08%)
Mutual labels:  modular, build
dnn
A light-weight deep learning framework implemented in C++.
Stars: ✭ 12 (-69.23%)
Mutual labels:  portable
base-starter-angular
Base Starter for Vaadin components with Angular
Stars: ✭ 13 (-66.67%)
Mutual labels:  starter-project
modular-deferred-gpu-particle-system
modular particle system using compute shaders.
Stars: ✭ 20 (-48.72%)
Mutual labels:  modular
bzl
Bzl - Integrated CLI + UI + VSCode Extension for Bazel
Stars: ✭ 43 (+10.26%)
Mutual labels:  build
RouterService
💉Type-safe Navigation/Dependency Injection Framework for Swift
Stars: ✭ 212 (+443.59%)
Mutual labels:  modular
build-plugin
Track your build performances like never before.
Stars: ✭ 45 (+15.38%)
Mutual labels:  build
jagen
A software engineer's workspace manager and build systems wrapper
Stars: ✭ 32 (-17.95%)
Mutual labels:  build
streamlink-portable
A script to build a portable version of Streamlink for Windows
Stars: ✭ 70 (+79.49%)
Mutual labels:  portable
Modiy
Modiy is an open-source hardware interface for modular synthesis.
Stars: ✭ 21 (-46.15%)
Mutual labels:  modular
java-portable
Install a portable version of the JDK (and bundled JRE) and run it everywhere without admin rights on Windows.
Stars: ✭ 22 (-43.59%)
Mutual labels:  portable
universal-router
↩️ Router for every occasions
Stars: ✭ 64 (+64.1%)
Mutual labels:  modular
Blazor.Diagrams
A fully customizable and extensible all-purpose diagrams library for Blazor
Stars: ✭ 327 (+738.46%)
Mutual labels:  modular
calendar-view-plugin
Jenkins Calendar View Plugin: Shows past and future builds in a calendar view
Stars: ✭ 17 (-56.41%)
Mutual labels:  build
SubmiBot
Plugin do Eclipse para automatização do processo de submissão de tarefas na disciplina de LP2 - Computação@UFCG
Stars: ✭ 16 (-58.97%)
Mutual labels:  build
ValliStart
A start menu to replace the un-customizable one that you have right now.
Stars: ✭ 89 (+128.21%)
Mutual labels:  modular
dbeaver-portable
🚀 DBeaver portable for Windows
Stars: ✭ 23 (-41.03%)
Mutual labels:  portable

Starter project for C++ with cmake

Start Now!!

Build Matrix

Project Documentation

Overview

  • CMake as the build system with or without presets
  • cross-platform portability on Linux, OS X and Windows
  • multiple compilers: clang, g++ and MSVC
  • modular structure with each module self-contained in a subdirectory within the project
  • CMake build helpers to facilitate declaration of library, exe, test modules, for the end-to-end lifecycle including doc generation, test, packaging etc...
  • common facilities (common module) for platform specifics, assertions support, logging
  • unit testing with Google Test
  • code coverage with clang or g++
  • zero-touch valgrind, clang-tidy, clang-format, google sanitizers, etc.
  • development can be done locally or in a dev container with vscode.

Getting the code

git clone --recurse-submodules -j4 https://github.com/abdes/asap.git

NOTES:

  • -j4 requests git to parallelize cloning of repos. Needs a relatively recent version of git. If that is not available, simply do not use this option.

Requirements

Make sure you have a C++ compiler with C++-17 capabilities at least. Gnu, Clang and MSVC all can do that with a recent version.

Enabling husky/commitlint/standard-version

Only one time after the project is cloned, do the following:

npx husky install
npm install -g @commitlint/cli @commitlint/config-conventional
npm install -g standard-version

Building

mkdir _build && cd _build && cmake .. && cmake --build .

or just use one of the predefined CMake presets. Detailed instructions and many useful commands are listed here.

CMake configurable build options

# Project options
option(BUILD_SHARED_LIBS        "Build shared instead of static libraries."              ON)
option(ASAP_BUILD_TESTS         "Build tests."                                           OFF)
option(ASAP_BUILD_EXAMPLES      "Build examples."                                        OFF)
option(ASAP_WITH_GOOGLE_ASAN    "Instrument code with address sanitizer"                 OFF)
option(ASAP_WITH_GOOGLE_UBSAN   "Instrument code with undefined behavior sanitizer"      OFF)
option(ASAP_WITH_GOOGLE_TSAN    "Instrument code with thread sanitizer"                  OFF)
option(ASAP_WITH_VALGRIND       "Builds targets with valgrind profilers added"           OFF)
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].