DEV Community

miheer vaidya
miheer vaidya

Posted on

Thinking of ending my love affair with vcpkg

What was the enticing thing about vcpkg

When vcpkg was incarnated, there were not good alternatives to apt-get which I knew of on Windows. I always liked visual studio and having a package manager from big company like Microsoft was really enticing. It wasn't the best in the sense that it won't give me binaries, but it would automate a lot of things for me and so it was welcome change. With lack of admin rights on hpc clusters, it was useful to get some libraries in Linux environments too.

The rift

The secrets

We the people by the people for the people taken too far

Many open-source libraries will denote their competitors and denote their differences in readme, but vcpkg doesn't list and compare itself with competitors, there is hidden FAQ which sheds some light with comparisons with competitors. After hearing about conan, I decided to step back and try to understand vcpkg's philosophy. I came across with this line:

C++ should be used in a C++ package manager for C++ programmers. You should not be required to learn another programming language just to understand your package manager.

I'll try to give some counter-arguments to this mission statement.

  1. As I started in earlier post, polyglot development is key to productive development.
  2. Contrary to vcpkg's mission statement, it has significant amount of cmake apart from c++. If the mission was to build everything in c++, I could envision "only" executing cmake binary as part of vcpkg.
  3. There are instances where you would need to keep distinct copies of vcpkg sources, and having a tool built in it implies the tool needs to be built before it can be used. There are efforts to bring vcpkg binary distribution. ### The package manager which can't handle multiple library versions You would assume you would have support for maintaining different version for same library but vcpkg can't do that. The only way until https://github.com/microsoft/vcpkg/pull/15565 is resolved is clone vcpkg in seperate folder and build vcpkg, git checkout port related files to older version and built it.

The conan way

Conan has binary package support; it's written in python which is not as terrible as cmake to work with and learn. It supports not only cmake, but any other generators you would like to use with your c++ project including raw gcc flags. I am looking forward to how it goes with conan.

References:

  1. https://github.com/52doho/vcpkg-vs-conan

Top comments (0)