I have been meaning to try biicode for a while now.
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.
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!