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
Green Hills C/C++ Compiler
Commercial optimizing C/C++ compiler family for embedded and real-time systems, with support for a wide range of processor architectures
Embarcadero C++Builder
Embarcadero's BCC32C, BCC32X, BCC64, BCCIOSARM64 and BCCAARM compilers
Intel oneAPI DPC++/C++ Compiler
LLVM-based C++ compiler with SYCL and OpenMP offload support, optimized for Intel CPUs and GPUs
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
Apple Clang
Apple's Clang-based C++ compiler included with Xcode, paired with libc++ and regularly updated for Apple platforms
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
nvcc (NVIDIA CUDA Compiler)
CUDA compiler driver that separates GPU device code from host C++ code, invokes NVIDIA's device compiler, and coordinates a supported host compiler
AMD Optimizing C/C++ Compiler (AOCC)
LLVM/Clang-based optimizing C and C++ compiler for x86 targets, with optimizations focused on AMD Zen processors
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
LLVM libc++
LLVM's portable C++ standard-library implementation, commonly paired with Clang
Microsoft STL
Microsoft's open-source standard-library implementation shipped with the MSVC toolchain
Apache C++ Standard Library (STDCXX)
Retired open-source C++ standard library implementation from the Apache Software Foundation
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
Embedded Template Library (ETL)
The Embedded Template Library (ETL) is not intended as a full replacement for the C++ Standard Template Library (STL), but rather as a complementary solution tailored specifically for embedded systems
HPX
HPX is a C++ Standard Library for Concurrency and Parallelism
oneAPI DPC++ Library (oneDPL)
Parallel-library implementation providing execution policies, parallel algorithms, iterators and SYCL-oriented extensions for heterogeneous C++ applications
Package Managers
Tools for managing C++ libraries and dependencies
vcpkg
vcpkg is a free C/C++ package manager for acquiring and managing libraries
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
C++ Package Manager (CPM)
CMake's missing package manager. A small CMake script for setup-free, cross-platform, reproducible dependency management
Hunter
CMake-driven, cross-platform source package manager for C and C++ projects
Spack
Spack is a package manager for supercomputers, Linux, macOS, and Windows. It makes installing scientific software easy
bpkg
bpkg is the package manager used in the build2 toolchain
Bazel
Build system whose Bzlmod module system resolves external dependencies through registries such as the Bazel Central Registry
xrepo
xrepo is a cross-platform C/C++ package manager based on Xmake
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
Ninja
Ninja is a small build system with a focus on speed
Meson
Meson is an open source build system meant to be both extremely fast, and, even more importantly, as user friendly as possible
Bazel
Hermetic, cache-aware build and test system aimed at large, multi-language monorepos
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}
Gradle C++
Gradle's C++ application and library plugins provide variant-aware compilation, linking, testing, and dependency management
Xcode Build System
Xcode's integrated system for compiling and linking code, processing resources, and assembling products for Apple platforms
Visual Studio Build Tools
Standalone command-line toolchain for Visual Studio projects, including optional MSVC C++ compilers, libraries, and Windows SDKs
MSBuild
Microsoft's extensible build platform and project-file format, used by Visual Studio for C++ and other project types
Xmake
A cross-platform build utility based on Lua
Premake
Lua-scripted project generator for toolchains and IDEs including Visual Studio, Xcode, and GNU Make
build2
Powerfully simple build configuration
GN
GN is a meta-build system that generates build files for Ninja
B2
B2 makes it easy to build C++ projects, everywhere
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
Windows x64 ABI conventions
Documentation for the x64 ABI used by Windows toolchains such as MSVC
ARM 64-bit C++ ABI
C++ ABI requirements for the 64-bit ARM architecture
Windows ARM ABI conventions
Documentation for the ARM ABI used by Windows toolchains such as MSVC
Windows ARM64 ABI conventions
Documentation for the ARM64 ABI used by Windows toolchains such as MSVC
Windows ARM64EC ABI conventions
Documentation for the ARM64EC ABI used by Windows toolchains such as MSVC
RISC-V ELF psABI v1.0
The ratified ABI specification for the RISC-V architecture
RISC-V ELF psABI Latest
The latest development version of the RISC-V ABI specification
Visual C++ name mangling
Wiki article describing the mangling scheme used in MSVC
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
System V i386 psABI
Processor ABI for 32-bit x86 System V platforms
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
LoongArch ELF psABI
ELF processor ABI and calling conventions for LoongArch
WebAssembly Basic C ABI
ABI used by LLVM and Clang for interoperable C and C++ code targeting WebAssembly
IBM XL C++ ABI compatibility
IBM documentation of the XL, libC, and libc++ C++ ABIs and their name mangling and binary compatibility