A package manager is a tool that helps a developer navigate the complicated space. Where would we possible be in the JavaScript world without Node Package Manager (NPM) with thousands of libraries and tools available with a few key strokes. The folks at Microsoft are attempting to bring the same utility to the C/C++ world, although because of the nature of the language, admittedly this is a much steeper hill to climb. Because of the intricacies of the different compilers and operating systems plus the unique compilation needs of each library, this is a really difficult thing to manage. I commend the effort.

With that said, this can be a frustrating tool to use. Essentially you install VCPKG, the package manager tool, to a known location in your system. Then, you add the specific library system to that. The VCPKG goes and gets that library package source code and compiles it into the VCPKG location. Generally that package compilation will include specific instructions for use of that library.

Link to the VCPKG repo is here…

What is the expectation here?

  • VCPKG installs consistently.
  • Add-in libraries install consistently and successfully in Windows, Linux, MacOS
  • What ever instructions the installer prints out for a given library, function as intended on the installed OS.

The good news?

  • Some pretty good people seem to be working hard on this project.
  • If you are using Visual Studio on Windows, the global installation tooling works seamlessly.   Its like magic.  Installed libraries just work, without extra configuration setup.
  • For other operating systems you may have to use CMake instructions.  Generally the VCPKG displays the exactly nomenclature to add to cmakelists.txt

The bad news?

  • There are a whole lot of open issues in the VCPKG repo (1300+).
  • Not every repo prints the correct cmake instructions for that package.
  • There is not a clear “How to Help” design document to enable the open source supporters to assist in closing out that large number of open issues.