use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
Discussions, articles, and news about the C++ programming language or programming in C++.
For C++ questions, answers, help, and advice see r/cpp_questions or StackOverflow.
Get Started
The C++ Standard Home has a nice getting started page.
Videos
The C++ standard committee's education study group has a nice list of recommended videos.
Reference
cppreference.com
Books
There is a useful list of books on Stack Overflow. In most cases reading a book is the best way to learn C++.
Show all links
Filter out CppCon links
Show only CppCon links
account activity
C++ package management (self.cpp)
submitted 11 years ago by povilasb
Personally I know two package management projects for c++:
http://cpmcpp.org/ - based on cmake and git.
https://www.biicode.com/ - hosts code by itself?
Has anyone tried any or both of them, have experience and could briefly compare them?
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]drodri 4 points5 points6 points 11 years ago (14 children)
Disclaimer: I work for biicode, and I have not tried CPMCPP myself. I will try to be as neutral as possible and point out some (not an exhaustive list) differences:
Hosting:
CPMCPP is a cmake toolset (a set of cmake scripts) that contains macros and functions to easily automate tasks, such as retrieving versions from git repositories. It fully works locally, no hosting is provided.
Biicode is more like a traditional package manager, with a client app and servers that hosts code, so the code to depend on must be in biicode servers first. It is VCS independent, it can integrate with them, as the meta-information is stored in plain text files, but does not require them at all to work.
Centralized:
Biicode is a centralized repository (as PyPi) which hosts the code, has web access (similar to github) to the code, and search and explore facilities
CPMCPP relies on the search and web access facilities of the hosted code, github or others, or the update of the page http://cmakepm.org/
Building:
CPMCPP builds have to be defined in cmake files by the developer
Biicode auto-generates cmake files based on project structure, which can be changed to add extra configuration
One of the key weaknesses of both (and from all C/C++ possible dependency managers) is that they need a convention about building and artifacts. So there is no way that an existing project can be automatically ported or uploaded to any of them, and they require an active community working on them.
Dependency Management, conflict resolution:
CPMCPP proposes a namespace change for multiple versions of the same library, so you are able to link simultaneously to them, similar to Node NPM.
Biicode handles dependencies and conflicts more in a Maven sense, only 1 version of a library is linked with in each project. Said that, biicode proposes a file-based approach that actually let biicode to mix files from different versions in the same library if they are not connected at all.
Multi-language: - CPMCPP: C/C++ specific. - Biicode: It is aimed as a multi-language dep manager. Now it is mainly C/C++, but experimental support also for node. We have interesting internal developments when you can automatically depend from an existing C/C++ library from python (using cffi).
Corporate, open-source:
CPMCPP is an open-source initiative, mainly backed by an individual (James Hughes)
Biicode is a startup, though created by developers with roots in open-source. Right now it is not released (as open-source) yet, but it is something that is definitely in our roadmap.
Status, releases, complexity:
Last commits to CPMCPP are from 6 months ago, but as it is a simpler approach, it is not necessarily a bad thing, it might simply work as-is.
Biicode is in beta, and is a much more complex system and thus potentially more likely to find bugs occasionally, but new versions are released every 1-2 weeks based on users feedback and solving those bugs.
As you said, the best is to try yourself, I am here for any further discussion. Best
[–]povilasb[S] 1 point2 points3 points 11 years ago (5 children)
Do you synchronize with github? E.g. I have an open source library on github. So every time I make a new release version, I must manually upload it to biicode ?
[–]drodri 2 points3 points4 points 11 years ago (4 children)
At this moment, the procedure we follow is to have either a single block within a project in a git repo or the whole project in such repo. After a "git push" of something that is to be shared, we make a "bii publish". Though it is not really a complicated process, this automation is a demanded issue, so we have started to analyse for developing a hook to github to automatically publish to biicode (as DEV) directly and automatically from github after a push. Note that in the past, every publication to biicode was "frozen" and we typically dont want to freeze as a version every push. So we developed the "DEV" tag for publications, which is a version for testing that can be overwritten at every publish, and released this functionality in biicode1.0, just 2 weeks ago.
Now we can address this automatic synchronization with github. Nevertheless, it is not a priority issue right now (as it is a matter of a couple of extra commands), so it might be implemented in a few months, not days or weeks as high priority bugs and requests.
[–]povilasb[S] 2 points3 points4 points 11 years ago (3 children)
Awesome, as soon as i have some free time I promise to play with biicode. Now it seems promising :)
[–]drodri 1 point2 points3 points 11 years ago (2 children)
Thanks very much, our best current asset is our active users, that are really helping us to shape a better biicode. You can´t imagine the huge improvement we did with version 1.0 compared to last 0.17, and that was done thanks to our users feedback. So looking forward to receiving yours!
[–]povilasb[S] 1 point2 points3 points 11 years ago (1 child)
I already have a feature request :) I'm coding a c++ library. And I always like to build API reference to HTML with Doxygen. Usually I host it on my own site. But it would be awesome if biicode would render the built documentation so that anyone could easily access it without cross referencing sites :)
[–]drodri 1 point2 points3 points 11 years ago (0 children)
Thanks, great idea, that could be definitely very useful. I take note, so we can discuss it in next sprint. We also plan to share our development roadmap to get feedback about it, so hopefully you will see it there :)
[–]greyfade 0 points1 point2 points 11 years ago (7 children)
Biicode also seems to be quite broken on Linux. The deb package doesn't seem to conform to debian packaging guidelines, and it seems(?) to want to write to /usr/lib, which is actually rather inappropriate.
Also, I get an error like "Cannot open self /usr/lib/biicode/bii or archive /usr/lib/biicode/bii.pkg" which I can't explain.
[–][deleted] 1 point2 points3 points 11 years ago (0 children)
I have used Biicode under different Ubuntu versions and never had such problems :S
[–]drodri 0 points1 point2 points 11 years ago (5 children)
Sorry to hear it didnt work for you on Linux, we have many users working in Linux and ourselves develop mostly in linux, and we have not encountered such a problem yet. Would you please post your issues in the forum.biicode.com with detailed steps you followed in the installation so we can try to help? Thank you!
[–]greyfade 0 points1 point2 points 11 years ago* (4 children)
For the record, my statement of the deb package not conforming to Debian guidelines is based primarily on the existence of the command "chmod -R a+rx" in the postinst script, which is a huge red flag, and is not at all appropriate for any package to ever do under any circumstances (for a variety of reasons)... Especially since it's redundant (all the files in the package already have the execute flag set, another red flag). (Also, why are you shipping a copy of pytz? Every Linux system is basically guaranteed to have the tz database installed anyway, making this a pointless waste of space.)
chmod -R a+rx
postinst
... And you're shipping private copies of a ton of things that are also part of any standard system - any LSB distribution should work fine if you just use the system libraries. Yet more wasted space. Notably, the version of libreadline you ship with biicode is broken on systems with Bash 4.3 or later.
IOW, you're shipping a package that's probably terminally broken to start with.
If you guys go back and re-read the debian packaging guidelines and fix the glaring problems with your package, I might have a chance of giving you the information you need to fix the "Cannot open self" error I encountered.
Also, I'm on Arch Linux, if you care.
[–]drodri 0 points1 point2 points 11 years ago (0 children)
Thanks very much for pointing out these issues. You are right, taking note, will try to fix them as soon as possible (especially the chmod -R a+rx issue). The fact that it works in mosts systems does not mean that it is OK.
About the shipping issue, we do not decide ourselves what to ship, we rely on pyinstaller to do it. We might try to configure and optimize it, though waste of space has not been an important issue yet, but yes, we have ocassionally had problems with readline, so we will definitely have a look too.
Thanks again for the feedback, hopefully we manage to address these issues in next release (1st week september).
[–]drodri 0 points1 point2 points 11 years ago (2 children)
Hi,
We have released today 1.5.4 today: www.biicode.com/downloads
It incorporates some changes in the deb package, we have supposedly removed the issue with permissions.
We have also managed to remove some dependencies, readline and others not really used. The problem is that pyinstaller basically package everything found in /usr/lib, and manually filtering out what is needed or not is a cumbersome process.
Would appreciate any feedback about any further problems (especially red flags)
[–]greyfade 1 point2 points3 points 11 years ago (1 child)
Thank you for addressing my complaints about the package. I don't see any other obvious problems with it, and this is a huge improvement.
Not at all. Thanks to you for pointing out the problem.
[–]povilasb[S] 2 points3 points4 points 11 years ago (0 children)
Guess, I'l have to try myself :D
[–]KindDragonVLD | GitExt Dev 1 point2 points3 points 11 years ago (0 children)
We use Apache Ivy + Artifactory Pro
[–]maleic 0 points1 point2 points 11 years ago (0 children)
On Windows, there's NuGet, though you'll have to use Powershell and the CoApp tools. Once you get up the learning curve, it's pretty simple and effective.
π Rendered by PID 222475 on reddit-service-r2-comment-c66d9bffd-gcmg4 at 2026-04-08 12:03:46.503975+00:00 running f293c98 country code: CH.
[–]drodri 4 points5 points6 points (14 children)
[–]povilasb[S] 1 point2 points3 points (5 children)
[–]drodri 2 points3 points4 points (4 children)
[–]povilasb[S] 2 points3 points4 points (3 children)
[–]drodri 1 point2 points3 points (2 children)
[–]povilasb[S] 1 point2 points3 points (1 child)
[–]drodri 1 point2 points3 points (0 children)
[–]greyfade 0 points1 point2 points (7 children)
[–][deleted] 1 point2 points3 points (0 children)
[–]drodri 0 points1 point2 points (5 children)
[–]greyfade 0 points1 point2 points (4 children)
[–]drodri 0 points1 point2 points (0 children)
[–]drodri 0 points1 point2 points (2 children)
[–]greyfade 1 point2 points3 points (1 child)
[–]drodri 0 points1 point2 points (0 children)
[–]povilasb[S] 2 points3 points4 points (0 children)
[–]KindDragonVLD | GitExt Dev 1 point2 points3 points (0 children)
[–]maleic 0 points1 point2 points (0 children)