Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Are there any efforts to create a package manager for C++? [closed]

One of my biggest frustrations with my favorite language is the effort it takes to get different libraries working for together under one unified development environment. My biggest wish is to just be able to tell my IDE, or whatever, that I need a certain library, and it takes care of downloading it, compiling it(if necessary), installing it, then setting up the include and library paths.

What I want is this, but for C++. I would prefer if it works with Visual Studio, but gcc is okay too. Or if it is it's own separate system, that's fine too. It does, however, have to work in Windows.

What promising projects are out there to solve this problem?

like image 493
Benjamin Lindley Avatar asked Sep 01 '11 04:09

Benjamin Lindley


People also ask

Is there any package manager for C?

Conan is a MIT-licensed, Open Source package manager for C and C++ development, allowing development teams to easily and efficiently manage their packages and dependencies across platforms and build systems.

Why there is no package manager for C++?

Because C++ is used in projects with quite demanding requirements. Management of packages should not be a feature of a programming language.

Does C++ have package management?

vcpkg is a free C/C++ package manager for acquiring and managing libraries. Choose from over 1500 open source libraries to download and build in a single step or add your own private libraries to simplify your build process. Maintained by the Microsoft C++ team and open source contributors.

Is a package manager necessary?

In theory you may not need a package manager and you could manually download and store your project dependencies, but a package manager will seamlessly handle installing and uninstalling packages. If you didn't use one, you'd have to manually handle: Finding all the correct package JavaScript files.


1 Answers

Have you considered Git as a package manager? I've been using git submodules for dependencies and sub-dependencies and combined with free git hosting services, the idea is quite powerful.

Just go into your git project,

git submodule add git://somehosting.com/you/package.git git submodule init package git submodule update package cd package && ./configure --stuff && make && cd .. 

To select particular dependency versions,

cd package && git checkout v3.2 && cd .. && git add package/ git commit -am "package version 3.2 pinned" && git push 

Now you've pinned your package dependency to a particular tag and saved your settings to your project repository. Next time someone does:

git pull && git submodule update 

Their package dependency will also be pinned to v3.2.

Some package management systems also feature signed packages. Git allows you to GPG sign your tags and lets people verify it by adding your public key to their keyring.

So we have package downloading, dependency versions and we can emulate "package signing". One missing part is pre-built binaries which, in my opinion isn't an absolute necessity. Another missing part is global package management. You will have to manually manage each git repository when a dependency of a dependency gets updated.

like image 122
nurettin Avatar answered Sep 21 '22 17:09

nurettin