

Show HN: Kit, a project manager for C - dasmithii
https://github.com/dasmithii/Kit

======
dasmithii
[author here]

I'm hoping to lessen the pain in dealing with tools like gcc and
make/cmake/etc. More importantly, C libraries are scattered inaccessibly
throughout the web, and Kit provides a central index of modularized units.
What's most important going forward is to gather useful libraries, modify them
to meet kit standards, and link them in this central registry. Any help there
would be appreciated (i.e. send me your libraries!).

Please let me know if you find bugs, have questions, or anything like that.

~~~
mitchty
Curious as to the use of this past something like ccan? Also does it generate
pkg-config files?

[http://ccodearchive.net/](http://ccodearchive.net/)

Also I'll admit I vastly prefer the autotools warts and all to cmake. But I'll
poke about at it later.

For my own stuff I have a template git repo setup that I can use that sets up
autotools/pkg-config/gcc/clang flags as needed that serves me rather well.

~~~
dasmithii
I hadn't come across ccan before your post, so my thoughts on it are fairly
superficial. [warn me if I'm off track]

From what I can tell, it's been around for a while, has countless modules, and
probably is a better choice than Kit at this point, given the early stage of
this project.

There are two main differences: (1) Kit is a project manager, while CCAN is a
code archive, and (2) Kit modules are compiled libraries, while CCAN
distributes source code only.

So, I suppose one would decide in favor of Kit because of its whole-scope
approach. If not that, because CCAN looks quite hackish at first glance. From
its homepage: _" just hack whatever parts you want so it compiles in your
project"_.

~~~
cleversoap
> Kit modules are compiled libraries, while CCAN distributes source code only.

Could you expand on this? I assume pulling the source, compiling locally, and
then adding the headers and libs to a project local include or link path. Is
it individual directories for each dependency or do they get mixed together?

How are you handling macros? Do you have some preset defines you're passing in
for different platforms?

I think it's an interesting idea and definitely has more polish than ccan. I
don't know if I'd ever give up fine grained control in production but for
small personal projects this would be ideal.

~~~
dasmithii
You're correct. When fetched, modules are given their own directory and
compiled locally (one directory per module/dependency). New projects are then
scanned for dependencies, linked against pre-compiled libraries, and necessary
headers are added to the search path.

In terms of presets, I have some [basic] defaults included myself, but more
can be added in an optional config file, along with arbitrary compiler flags.

Kit is optimized for simple projects, where crazy build scripts aren't needed.
So, yeah, for fine-grained control, I'd stick to existing tools. However, this
may be more pleasant than alternatives for personal projects, as you mention.

