0

I come from Java world. I was looking for Apache Maven alternative in C++ world. I think I found the correct project. I have few questions and have not managed to find an answer.

Is it possible to manage local repository. Let's say, I work on 5 similar but different projects and this project share mostly the same dependencies. Will each project have it's own dependencies stored inside each project or is there a "system" wide (per user) local repository where dependencies are stored?

Is it possible to "publish" only to local folder so other project can "see" dependent block or it has to go over bii internet repository?

Or am I wrong - about how bii works.

Looks nice project. Keep up the good work.

1 Answers1

0

Right now, projects act as virtualenvs, each project contains and build its dependencies. This is intended for fast evolving libraries. Imagine you have 5 similar projects all depending on the same library A, version 0. While working on one of those projects you can make a modification to A and publish a new version, an API breaking modification. The other 4 projects will continue depending on version 0, and will not break. When you move to those projects you can easily update their dependencies and fix the breakages.

You can share the same library among different projects straight ahead with sym links if working in linux, not working by now in windows.

For very stable, large projects that can be installed system-wide, it could be more convenient to depend on the installed version. CMake allows this very easily via FindXXX(). You can install system wide the binaries with CMake install, or you can even use CMake scripts or biicode python hooks to automatically download and install system wide those libraries. Check, e.g.:http://www.biicode.com/diego/opencvex, OpenCV is managed with a biicode python hook and installed system wide.

At this moment there is no "local" publication, and if you want to share that way among projects, yes, you have to go over the biicode cloud servers, simply with "bii publish".

However, we are transitioning to open-source. We will probably release first the client code, then we will release a server that could be deployed in-house. Not implemented yet, but a future feature is that this server could act as a proxy to the cloud one, you can publish to the local instance, but read from the cloud one. With a local installation of this server, you will be able to publish locally.

drodri
  • 5,157
  • 15
  • 21
  • I guess I have to look into CMake more deep. It was interesting to see, that CMake was installed in "local-ish" way, so I have now two versions of CMake on my env (I use Ubuntu 14.04 LTS x64). I thought all libraries are "stored" the same way. As I said, I use Apache Maven day-to-day. I have "install" to publish into local repository and "publish" to publish to remote repository. So a big +1 for your future plans, sounds great. – Miroslav Beranič Feb 26 '15 at 14:00
  • Yes, CMake >3.0 is installed locally, because the mainstream supported version by distros is CMake 2.8, but CMake is already at 3.2. Users requested our installation not to interfere with the system 2.8, so we installed locally and created a /.biicode/cmake_path file that points to it. Similarly, other big libs as OpenCV and Boost are installed also in that location, which is user-wide for all your projects. But most libraries are in fact in source code inside each project, kind of virtualenv, which is very convenient and intuitive to manage different versions, debugging, etc. – drodri Feb 26 '15 at 16:22