Skip to content

Package manager comparison #34

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
uilianries opened this issue Nov 10, 2017 · 5 comments
Closed

Package manager comparison #34

uilianries opened this issue Nov 10, 2017 · 5 comments

Comments

@uilianries
Copy link
Member

Hi!

Just a suggestion to a new post:

When Conan was presented at cppcon 2017, @memsharded mentioned some package managers, but we don't have a good real analysis for this.

I read once in reddit some discussion about Conan versus Buckaroo.

IMHO would like to have a post comparing features per tool. This publication may be a great place for people that are looking for a package manager, but they don't know what to use.

Regards!

@uilianries uilianries changed the title Package manager comparation Package manager comparison Nov 10, 2017
@mathieucaroff
Copy link

mathieucaroff commented Sep 5, 2018

Since 2018-07, there's Quincunx271 contribution, on reddit. See: What is a good Package Manager for C++?. No mention of Buckaroo in his post though 😞.

Conan is my favorite out of the ones I've tried.

Vcpkg

Pros
  • Easy to get going (git clone then bootstrap it)
  • Easy to use existing packages (vcpkg install foo, plus the integration is nice for Visual Studio)
  • Non-intrusive CMake integration
  • Not too difficult to add new packages if you need them
  • Apparently very active work, meaning new packages get added all the time
Cons
  • Builds everything from source. If I only want Boost as a header only library, I still have to build it, which takes 30 mins to 1 hour
  • I haven't seen an easy way to request a particular version of a package

Conan

Pros
  • Easy to get going (Not quite as easy as vcpkg or Hunter, but still easy, with pip install conan)
  • Integrates into every build system I've ever used
  • Recently got non-intrusive CMake integration
  • Gets pre-built packages by default, though you can request to build from source. Getting header-only Boost took around 2 minutes, the shortest of any of the package managers I've tried
  • The Conan channel on the cpplang Slack has people who are very helpful in helping you figure out Conan
Cons
  • Requires Python, although this was a non issue for me
  • Non-intrusive CMake integration is still somewhat intrusive by default, due to it coming much later, so existing packages weren't aware of how to be easily non-intrusively consumable from Conan
  • Doesn't seem as easy to add new packages that you don't own, but doesn't seem that hard either

Hunter

Pros
  • Easy to get going (just add the HunterGate command)
  • Easy to use with CMake. The command to find dependencies mirrors find_package
  • Designed with CMake as its only target, which means that it adheres to good CMake practice with its generated targets. Out of all the build systems I've tried, Hunter seems to understand good CMake practice the best
Cons
  • Only supports CMake
  • Intrusive CMake integration
  • Adds several seconds at a minimum to CMake's configure time
  • AFAICT, adding new packages requires submitting a PR
  • Builds from source. Boost again takes a long time
  • I couldn't figure out why it rebuilt my packages for every project. I ended up with 3 copies of Boost from using Hunter
  • AFAICT, packages can only be installed when you run the configure step. There's no way to install packages beforehand
  • I haven't seen an easy way to request a particular version of a package

@s-celles
Copy link

s-celles commented Jan 3, 2019

I'm also wondering what package manager could be used for Arduino libraries arduino/Arduino#5795 (comment)
This reddit post is now archived... so we unfortunately can't expect a Conan / Buckaroo comparison there
I would be very pleased to have a (ideally unbiased) comparison with pros and cons.

@memsharded
Copy link
Member

I would be very pleased to have a (ideally unbiased) comparison with pros and cons.

This is the main reason we have never gone for such a comparison in our site or in our blog, because, by definition, it will be (possibly very) biased.

@memsharded
Copy link
Member

Regarding Arduino, not sure about the pain. I have programmed a few Arduinos, and it wasn't a pain big enough to use another tool. Maybe I didn't use them extensively enough, but I used a few libraries (wifi, sensors, etc), typically just copy them into the project or Arduino libraries path and worked.

But sure Conan could be used for that purpose, as one of its focus is high configurability, integration with any build system, etc. There are users using conan in production for embedded devices. Maybe it won't be necessary to create binaries, but just source packages. If there were high interest by the community we could even open a dedicated repository in Bintray, like "arduino-center", to act as a central repository for the community. Just an idea, possibly a few things to discuss, but feel free @scls19fr to do the suggestion to the Arduino community.

@s-celles
Copy link

s-celles commented Jan 4, 2019

Thanks @memsharded

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants