/ C++, TOOLS

Biicode

cover image by youarelee , licensed under CC BY-SA 2.0

I have been meaning to try biicode for a while now.

I have heard about it in blog posts, in podcasts, and I have been looking for a tool like that.

I have finally taken the time to try it, and have published my very first block. Go check it out!

Oh, what's a block? A block is what biicode calls to a piece of code you make available for others to reuse. I am used to spliting the software I write into fully independent pieces anyway, since it helps me reuse them later on. Now all I have to do is publish them to be able to use them in my other projects. For now biicode only supports public blocks, so this means I am also sharing them with anyone who wants to use them. I believe they are planning on following github's example and charging users for private repositores (or blocks in their case).

My first block is a simple library to load csv files with Magic the Gathering collections exported from the deckbox website.

It is licensed under the Boost Software License, and is available in github and in biicode.

Since I am using boost I have followed their instructions for using boost with biicode, and I have to say I am impressed.

It worked like a charm. My single complaint about it is that I got some warning messages about unresolved dependencies.

When I ran the bii find command I got presented with this:

INFO: Processing changes...
INFO: Finding missing dependencies in server
INFO: Looking for boost/spirit...
WARN: Can't find block candidate for: boost/spirit
INFO: Looking for boost/fusion...
WARN: Can't find block candidate for: boost/fusion
INFO: Analyzing compatibility for found dependencies...


It seems they have not yet fully mapped all the boost includes into the boost biicode block. Or maybe the message is just for header only boost sub libraries? I know I am being nitpicky here, but I hate warning messages (I know I’m not alone).

These unresolved dependencies are also visible in the web page representing my block (just click "Block Dependencies").

Overall I am very impressed with biicode and highly recommend anyone who is tired of messing with dependencies manually to try it out.

Seeing biicode detect the dependencies from just the includes in my source files, downloading, configuring, compiling them and then handling all of the Cmakefile.txt generation and compiling my sources and linking the result with the dependencies it detected is a great experience (I was half expecting it to fail midway and ask me to do something manually).

I have also tried out CLion (but I will leave that for another post). Both CLion and biicode use CMake as a foundation. They work very well together (and work is being done to make sure they do).

A word of advise: if you are experimenting with biicode and plan on trying CLion on that project, make sure you specify the CLion layout when you initialize your biicode project.

bii init -l clion prj_name


This will not harm your command line interactions with biicode and will ensure CLion will fully understand it.

 

If you use my block, please let me know. Happy biicoding!

 

rui

Rui Pires

Working as a professional full time remote developer from the Azores since 2011.

Read More