Ecosystem

Resources for the vast ecosystem behind C++

C++ Compilers and Toolchains

Popular C++ compilers, compiler front ends, and toolchains across desktop, embedded and WebAssembly targets

GCC

Mature open-source compiler collection with broad architecture and operating-system support and the libstdc++ C++ standard library

Clang

The Clang project provides a language front-end and tooling infrastructure for languages in the C language family (C, C++, Objective C/C++, OpenCL, and CUDA) for the LLVM project

MSVC

Microsoft's proprietary C++ toolchain for Windows, integrated with Visual Studio and also available as standalone Build Tools

MinGW-w64

Mingw-w64 is a collection of header files, import libraries, libraries and tools that, when combined with a compiler toolchain, such as GCC or LLVM, provides a complete development environment for building native Windows applications and libraries

Emscripten

Emscripten is a complete compiler toolchain to WebAssembly, using LLVM, with a special focus on speed, size, and the Web platform

clang-cl

clang-cl is an alternative command-line interface to Clang, designed for compatibility with the Visual C++ compiler, cl.exe

EDG C++ Front End

Commercial, configurable C and C++ compiler front end intended for integration into compilers, source-analysis tools, and other language-processing products

IAR C/C++ Compiler

Commercial optimizing C/C++ compiler family for embedded development, integrated with IAR Embedded Workbench and Build Tools

NVC++ (NVIDIA HPC SDK)

NVIDIA HPC C++ compiler supporting multicore CPUs and NVIDIA GPUs through standard C++ parallelism, OpenACC, and OpenMP

Standard Libraries

Implementations of the C++ standard library and notable alternatives

libstdc++

GNU's standard-library implementation, normally paired with GCC and also usable with Clang

EASTL

EASTL stands for Electronic Arts Standard Template Library. It is an extensive and robust implementation that has an emphasis on high performance

NVIDIA libcu++

libcu++ (libcudacxx) provides fundamental, idiomatic C++ abstractions that aim to make the lives of CUDA C++ developers easier

Package Managers

Tools for managing C++ libraries and dependencies

Conan

Create, share and reuse native binaries across your teams. One tool that speaks MSVC, CMake, Meson, Ninja - and plays nicely with the compiler flags you already have

Meson

Build system whose Wrap dependency mechanism can consume subprojects and the WrapDB package catalog

Spack

Spack is a package manager for supercomputers, Linux, macOS, and Windows. It makes installing scientific software easy

Bazel

Build system whose Bzlmod module system resolves external dependencies through registries such as the Bazel Central Registry

Build systems and generators

Tools for building C++ projects and managing build configurations

CMake

CMake is the de-facto standard for building C++ code, with over 2 million downloads a month. It’s a powerful, comprehensive solution for managing the software build process

GNU Make

GNU Make is a tool which controls the generation of executables and other non-source files of a program from the program's source files

Meson

Meson is an open source build system meant to be both extremely fast, and, even more importantly, as user friendly as possible

SCons

SCons is an improved, cross-platform substitute for the classic Make utility with integrated functionality similar to autoconf/automake and compiler caches such as ccache

qmake

Qt's legacy project generator, retained for existing projects while new Qt projects generally use CMake

GNU Autotools

Suite of Autoconf, Automake, and Libtool for producing portable source packages and configure-driven builds

Buck2

A large-scale build tool. The successor to Buck. Ready for users ∈ {C++, Python, Rust, Haskell, Erlang, OCaml, Java, Kotlin, Go}

MSBuild

Microsoft's extensible build platform and project-file format, used by Visual Studio for C++ and other project types

Premake

Lua-scripted project generator for toolchains and IDEs including Visual Studio, Xcode, and GNU Make

ABIs

Documentation of the C++ Application Binary Interface (ABI) and name mangling schemes used by various compilers and platforms

Itanium C++ ABI

The C++ ABI used by GCC, Clang, and other toolchains on many non-Windows platforms

ARM 32-bit C++ ABI

C++ ABI requirements for the 32-bit ARM architecture, derived from the Itanium C++ ABI

ARM AAPCS32

Procedure call standard, data layout, and calling conventions for the 32-bit ARM architecture

ARM AAPCS64

Procedure call standard, data layout, and calling conventions for the 64-bit ARM architecture

System V x86-64 psABI

Processor ABI for x86-64 System V platforms, including calling conventions, data layout, ELF, and C++ conventions

Apple ARM64 ABI

Apple's ARM64 ABI, including Apple-specific differences from the generic ARM and C++ ABIs

Apple x86-64 ABI

Calling conventions and ABI requirements for 64-bit Intel code on Apple platforms

Apple ARMv7 ABI

ABI and calling conventions for ARMv7 code on legacy Apple platforms

PowerPC64 ELFv1 ABI

Original 64-bit PowerPC ELF ABI used primarily by big-endian PowerPC64 systems

PowerPC64 ELFv2 ABI

ELFv2 ABI for 64-bit Power Architecture systems, including calling and linkage conventions

MIPS System V ABI

System V processor ABI for MIPS, including data layout, calling conventions, ELF, and dynamic linking

s390x ELF ABI

ELF ABI and calling conventions for IBM Z and LinuxONE 64-bit systems