Vcpkg: a tool to acquire and build C++ open source libraries on Windows

Last update: 04/28/2017

We are delighted to announce the availability of Vcpkg on GitHub https://github.com/Microsoft/vcpkg . Vcpkg simplifies acquiring and building open source libraries on Windows.

Acquiring native libraries on Windows is a critical part of the application development process; in our surveys, you told us that 80% of your C++ projects depend on two or more libraries. Despite this, we’ve heard that the current process for acquiring native libraries falls below C++ developers’ expectations when compared to other platforms such as Mac (Homebrew) and Linux (apt-get, yum, etc.)

After examining successes across all platforms, we’ve created Vcpkg with these set of principles:

  • Open-source tools
  • No installation needed
  • Repeatable builds, from source
  • Customizable builds
  • Open to contributions from community
  • Ports collection approach

We created a document that goes into more details on these topics.

Getting Started

Prerequisites:

  • Visual Studio 2015 or Visual Studio 2017
  • Windows 7 (or up)

To acquire the tool:

  • Clone from GitHub: git clone https://github.com/Microsoft/vcpkg
  • Run the bootstrap script in the vcpkg folder: powershell -exec bypass scripts\bootstrap.ps1
  • Now vcpkg.exe is in the root of the repository

You are now all set (no installation, no registry… the tool and the associated “lib folder” are xcopy-able)

Available triplets

arm-uwp.cmake
x64-uwp.cmake
x64-windows-static.cmake
x64-windows.cmake
x86-uwp.cmake
x86-windows-static.cmake
x86-windows.cmake

List of libraries (04/28/2017)

To see the list of the 211 available libraries, use vcpkg search:

ace 6.4.3 The ADAPTIVE Communication Environment
anax 2.1.0-1 An open source C++ entity system. <https://github…
antlr4 4.6-1 ANother Tool for Language Recognition
apr 1.5.2 The Apache Portable Runtime (APR) is a C library …
asio 1.10.8 Asio is a cross-platform C++ library for network …
assimp 3.3.1 The Open Asset import library
atk 2.24.0 GNOME Accessibility Toolkit
atlmfc 0 a stub package that ensures VS has ATL/MFC instal…
aws-sdk-cpp 1.0.61 AWS SDK for C++
azure-storage-cpp 3.0.0-2 Microsoft Azure Storage Client SDK for C++ A clie…
beast 1.0.0-b30 Boost.Asio based header only HTTP and WebSocket o…
bond 5.3.1 Bond is a cross-platform framework for working wi…
boost 1.64-1 Peer-reviewed portable C++ source libraries
boost-di 1.0.1 C++14 Dependency Injection Library.
botan 2.0.1 A cryptography library written in C++11
box2d 2.3.1-374664b Box2D (http://box2d.org) is an open source C++ en…
bullet3 2.86.1 Bullet Physics is a professional collision detect…
bzip2 1.0.6 High-quality data compressor.
cairo 1.15.4 Cairo is a 2D graphics library with support for m…
cairomm 1.15.3-1 A C++ wrapper for the cairo graphics library
catch 1.9.1 C++ Automated Test Cases in Headers
cereal 1.2.1 a header-only C++11 serialization library (built …
chakracore 1.4.0 Core part of the Chakra Javascript engine
charls 2.0.0 CharLS, a C++ JPEG-LS library implementation.
clapack 3.2.1 CLAPACK (f2c’ed version of LAPACK)
clockutils 1.1.1-3651f232c27074c4ceead169e223edf5f00247c5 A lightweight c++ library for commonly needed tas…
constexpr 1 Small MIT License Library of general stdlib funct…
cpprestsdk 2.9.0-2 C++11 JSON, REST, and OAuth library The C++ REST …
cppwinrt feb2017_refresh-14393 C++/WinRT is a standard C++ language projection f…
cppzmq 4.2.1 lightweight messaging kernel, C++ bindings
cryptopp 5.6.5 Crypto++ is a free C++ class library of cryptogra…
cuda 8.0-1 A parallel computing platform and programming model
curl 7.51.0-3 A library for transferring data with URLs
decimal-for-cpp Jan-00 Decimal data type support, for COBOL-like fixed-p…
dimcli 1.0.3 C++ command line parser toolkit
directxmesh Oct-16 DirectXMesh geometry processing library
directxtex Dec-16 DirectXTex texture processing library
directxtk dec2016-1 A collection of helper classes for writing Direct…
directxtk12 Dec-16 A collection of helper classes for writing Direct…
dlfcn-win32 1.1.0 dlfcn-win32 is an implementation of dlfcn for Win…
dlib 19.4-1 Modern C++ toolkit containing machine learning al…
doctest 1.1.0 The lightest feature-rich C++ single-header testi…
double-conversion 2.0.1 Efficient binary-decimal and decimal-binary conve…
dx 1.0.1 A modern C++ library for DirectX programming
dxut 11.14-2 A “GLUT”-like framework for Direct3D 11.x Win32 d…
ecm 5.32.0 Extra CMake Modules (ECM), extra modules and scri…
eigen3 3.3.3 C++ template library for linear algebra: matrices…
entityx 1.2.0 EntityX – A fast, type-safe C++ Entity-Component …
expat 2.1.1 XML parser library written in C
fastlz 1 A lightning-fast lossless compression library
ffmpeg 3.2.4-2 a library to decode, encode, transcode, mux, demu…
fftw3 3.3.6-p11 FFTW is a C subroutine library for computing the …
flatbuffers 1.6.0 Memory Efficient Serialization Library http://goo…
fltk 1.3.4-2 FLTK (pronounced fulltick) is a cross-platform C+…
fmt 3.0.1-4 Formatting library for C++. It can be used as a s…
fontconfig 2.12.1 Library for configuring and customizing font access.
freeglut 3.0.0 Open source implementation of GLUT with source an…
freeimage 3.17.0-1 Support library for graphics image formats
freerdp 2.0.0-beta1+android11 id11 A free implementation of the Remote Desktop Proto…
freetype 2.6.3-5 A library to render fonts.
gdal 1.11.3-2 The Geographic Data Abstraction Library for readi…
gdcm2 2.6.7 Grassroots DICOM library
gdk-pixbuf 2.36.5 Image loading library.
geographiclib 1.47-patch1-3 a small set of C++ classes for performing convers…
geos 3.5.0 Geometry Engine Open Source
gettext 0.19 The GNU gettext utilities are a set of tools that…
gflags 2.2.0-2 A C++ library that implements commandline flags p…
glbinding 2.1.1-1 glbinding is an MIT licensed, cross-platform C++ …
glew 2.0.0-1 The OpenGL Extension Wrangler Library (GLEW) is a…
glfw3 3.2.1-1 GLFW is a free, Open Source, multi-platform libra…
gli 0.8.2 OpenGL Image (GLI) https://gli.g-truc.net
glib 2.52.1 Portable, general-purpose utility library.
glm 0.9.8.1 OpenGL Mathematics (GLM) https://glm.g-truc.net
globjects 1.0.0 C++ library strictly wrapping OpenGL objects. <ht…
glog 0.3.4-0472b91-1 C++ implementation of the Google logging module
glslang 1c573fbcfba6b3d631008b1babc838501ca925d3-1 Khronos reference front-end for GLSL and ESSL, an…
graphicsmagick 1.3.25 Image processing library
grpc 1.2.3 An RPC library and framework
gsl 0-fd5ad87bf Guideline Support Library
gtest 1.8 GoogleTest and GoogleMock testing frameworks.
gtk 3.22.11 Portable library for creating graphical user inte…
harfbuzz 1.4.6 HarfBuzz OpenType text shaping engine
hdf5 1.10.0-patch1-1 HDF5 is a data model, library, and file format fo…
http-parser 2.7.1-1 HTTP Parser.
icu 59.1-1 Mature and widely used Unicode and localization l…
jbigkit 2.1 A software implementation of the JBIG1 data compr…
jsoncpp 1.7.7 jsoncpp is an implementation of a JSON reader and…
jxrlib 1.1-2 Open source implementation of the jpegxr image fo…
lcms 2.8 Little CMS.
libarchive 3.3.1 Library for reading and writing streaming archives
libbson 1.6.2 libbson is a library providing useful routines re…
libccd 2.0.0 Library for collision detection between two conve…
libepoxy 1.4.1-7d58fd3 Epoxy is a library for handling OpenGL function p…
libevent 2.1.8-1 An event notification library
libffi 3.1 Portable, high level programming interface to var…
libflac 1.3.2-2 Library for manipulating FLAC files
libgd 2.2.4-1 Open source code library for the dynamic creation…
libiconv 1.14 GNU Unicode text conversion
libjpeg-turbo 1.5.1-1 libjpeg-turbo is a JPEG image codec that uses SIM…
liblzma 5.2.3-1 Compression library with an API similar to that o…
libmad 0.15.1 high-quality MPEG audio decoder
libmariadb 2.3.2 MariaDB Connector/C is used to connect C/C++ appl…
libmodplug 0.8.8.5-bb25b05 The ModPlug mod file playing library.
libmysql 5.7.17-1 A MySQL client library for C development.
libnice 0.1.13 Libnice is an implementation of the IETF’s Intera…
libodb 2.4.0 ODB library, base runtime for the ODB ORM solution
libodb-pgsql 2.4.0 Description: PostgreSQL support for the ODB ORM l…
libodb-sqlite 2.4.0 Sqlite support for the ODB ORM library
libogg 1.3.2 Ogg is a multimedia container format, and the nat…
libp7-baical 4.1 P7 is a library for high-speed sending telemetry …
libpng 1.6.28-1 libpng is a library implementing an interface for…
libpopt 1.16-10~vcpkg1 Library for parsing command line parameters
libpq 9.6.1 The official database access API of postgresql
libraw 0.18.0-1 raw image decoder library
libsigcpp 2.1 Typesafe callback framework for C++
libssh2 1.8.0-1 The SSH library
libtheora 1.1.1 Theora is a free and open video compression forma…
libuv 1.10.1-2 libuv is a multi-platform support library with a …
libvorbis 1.3.5-143caf4-2 Ogg Vorbis is a fully open, non-proprietary, pate…
libvpx 1.6.1-1 The reference software implementation for the vid…
libwebm 1.0.0.27-1 WebM File Parser
libwebp 0.6.0-1 Lossy compression of digital photographic images.
libwebsockets 2.0.0-1 Libwebsockets is a lightweight pure C library bui…
libxml2 2.9.4-1 Libxml2 is the XML C parser and toolkit developed…
libxslt 1.1.29 Libxslt is a XSLT library implemented in C for XS…
lmdb 0.9.18-2 LMDB is an extraordinarily fast, memory-efficient…
log4cplus 1.1.3-RC7 A simple to use C++ logging API providing thread-…
lua 5.3.4 a powerful, fast, lightweight, embeddable scripti…
lz4 1.7.5 Lossless compression algorithm, providing compres…
lzo 2.09 Lossless data compression library
mdnsresponder 765.30.11 The mDNSResponder project is a component of Bonjo…
metis 5.1.0 Serial Graph Partitioning and Fill-reducing Matri…
mongo-c-driver 1.6.2 Client library written in C for MongoDB.
mongo-cxx-driver 3.1.1 MongoDB C++ Driver.
mpg123 1.24.0-1 mpg123 is a real time MPEG 1.0/2.0/2.5 audio play…
mpir 3.0.0-2 Multiple Precision Integers and Rationals.
msgpack 2.1.1 MessagePack is an efficient binary serialization …
msmpi 8.0-1 Microsoft MPI
nana 1.4.1-66be23c9204c5567d1c51e6f57ba23bffa517a7c Cross-platform library for GUI programming in mod…
nanodbc 2.12.4 A small C++ wrapper for the native C ODBC API.
netcdf-c 4.4.1.1-1 a set of self-describing, machine-independent dat…
netcdf-cxx4 4.3.0 a set of machine-independent data formats that su…
nlohmann-json 2.1.1 JSON for Modern C++
octomap cefed0c1d79afafa5aeb05273cf1246b093b771c-1 An Efficient Probabilistic 3D Mapping Framework B…
ogre 1.9.0 3D Object-Oriented Graphics Rendering Engine
openal-soft 1.17.2 OpenAL Soft is an LGPL-licensed, cross-platform, …
openblas v0.2.19-1 OpenBLAS is an optimized BLAS library based on Go…
opencv 3.2.0-1 computer vision library
opengl 0.0-3 Open Graphics Library (OpenGL)[3][4][5] is a cros…
openjpeg 2.1.2-1 JPEG 2000 image library
openssl 1.0.2k-2 OpenSSL is an open source project that provides a…
openvr 1.0.5 an API and runtime that allows access to VR hardw…
opus 1.1.4 Totally open, royalty-free, highly versatile audi…
pango 1.40.4 Text and font handling library.
parmetis 4.0.3 Parallel Graph Partitioning and Fill-reducing Mat…
pcre 8.38-1 Perl Compatible Regular Expresions
pcre2 10.23 PCRE2 is a re-working of the original Perl Compat…
pdcurses 3.4 Public Domain Curses – a curses library for envir…
physfs 2.0.3 a library to provide abstract access to various a…
picojson 1.3.0 A header-file-only, JSON parser serializer in C++.
pixman 0.34.0-1 Pixman is a low-level software library for pixel …
poco 1.7.8 Modern, powerful open source C++ class libraries …
portaudio 19.0.6.00 PortAudio Portable Cross-platform Audio I/O API P…
pqp 1.3-1 a proximity query package
proj 4.9.3 PROJ.4 library for cartographic projections
protobuf 3.2.0 Protocol Buffers – Google’s data interchange format
pugixml 1.8.1 C++ XML processing library
pybind11 2.1.0 pybind11 is a lightweight header-only library tha…
qca 2.2.0 Qt Cryptographic Architecture (QCA). Sources: htt…
qt5 5.7.1-7 Qt5 application framework main components. Webeng…
qwt 6.1.3-1 Qt widgets library for technical applications
ragel 6.9 Ragel State Machine Compiler
range-v3 20150729-vcpkg3 Range library for C++11/14/17.
rapidjson 1.1.0 A fast JSON parser/generator for C++ with both SA…
rapidxml 1.13 RapidXml is an attempt to create the fastest XML …
rxcpp 3.0.0 Reactive Extensions for C++
sdl2 2.0.5-2 Simple DirectMedia Layer is a cross-platform deve…
sdl2-image 2.0.1 SDL_image is an image file loading library. It lo…
sdl2-mixer 2.0.1 Multi-channel audio mixer library for SDL.
sdl2-net 2.0.1 Networking library for SDL
sdl2-ttf 2.0.14 A library for rendering TrueType fonts with SDL
sery 1.0.0 Simple binary (de)serialization library
sfml 2.4.2 Simple and fast multimedia library
shaderc 2df47b51d83ad83cbc2e7f8ff2b56776293e8958 A collection of tools, libraries and tests for sh…
signalrclient 1.0.0-beta1 C++ client for SignalR.
smpeg2 2.0.0 SDL MPEG Player Library
soci 2016.10.22 SOCI database access library
spdlog 0.12.0 Very fast, header only, C++ logging library
spirv-tools 1.1-f72189c249ba143c6a89a4cf1e7d53337b2ddd40 API and commands for processing SPIR-V modules
sqlite-modern-cpp 2.4 The C++14 wrapper around sqlite library
sqlite3 3.18.0-1 SQLite is a software library that implements a se…
stb 1 stb single-file public domain libraries for C/C++
szip 2.1-1 Szip compression software, providing lossless com…
taglib 1.11.1-1 TagLib Audio Meta-Data Library
tbb Intel’s Threading Building Blocks.
tclap 1.2.1 Templatized command-line argument parser for C++
think-cell-range e2d3018 think-cell’s range library <https://think-cell.co…
tiff 4.0.7-1 A library that supports the manipulation of TIFF …
tinyexr v0.9.5-d16ea6 Library to load and save OpenEXR(.exr) images
tinyxml2 3.0.0 A simple, small, efficient, C++ XML parser
utfcpp 2.3.4 UTF-8 with C++ in a Portable Way
uvatlas Sep-16 UVAtlas isochart texture atlas
uwebsockets 0.14.2 Highly scalable cross-platform WebSocket & HTTP l…
vtk 7.1.0 Software system for 3D computer graphics, image p…
websocketpp 0.7.0 Library that implements RFC6455 The WebSocket Pro…
wt 3.3.6-3 Wt is a C++ library for developing web applications
wtl 9.1 Windows Template Library (WTL) is a C++ library f…
xalan-c 1.11-1 Xalan is an XSLT processor for transforming XML d…
xerces-c 3.1.4-3 Xerces-C++ is a XML parser, for parsing, generati…
xlnt 0.9.4 Cross-platform user-friendly xlsx library for C++14
xxhash 0.6.2 Extremely fast hash algorithm
yaml-cpp 0.5.4 yaml-cpp is a YAML parser and emitter in C++ matc…
zeromq 4.2.2 The ZeroMQ lightweight messaging kernel is a libr…
zlib 1.2.11 A compression library
zstd 1.1.1 Zstandard – Fast real-time compression algorithm …
zziplib 0.13.62 library providing read access on ZIP-archives

This is just the beginning; we’ll accept contributions for new libraries, updates and improvements. See example 2 in examples.md on how to create your own port file in the catalog.

Use Vcpkg with your projects

The easiest way to use Vcpkg from Visual Studio is through the user-wide integration, making the system available to all VS projects you build.

vcpkg integrate install

This will require administrator access the first time it is used on a given machine. After the first use, administrator access is no longer required and the integration is on a per-user basis.

In addition to the VS integration, Vcpkg also supports CMake and other build systems. For more information, see docs/EXAMPLES.md.

We want to hear from you!

This tool is now available for you to try. Please share your feedback and suggestions! The best place to provide them is in the GitHub repo: create new issues or vote on existing ones. We would love to accept pull requests for more open-source libraries — see docs/CONTRIBUTING.md.

You can also contact us at vcpkg@microsoft.com