LIBRA

Reusable build automation in the spirit of the world’s second most successful plumber.

This project provides 100% reusable cmake scaffolding that can be used for nested/flat C/C++ projects (even mixing the two), and provides resuable build “plumbing” that can be transferred without modification between projects. I created this project because:

  • No existing C/C++/CUDA build system supported automatic file discovery like make via globs.

  • No existing C/C++/CUDA build system provided 100% reusability across projects (assuming some conventions for file naming, directory layout, etc.). I found myself frequently copying and pasting CmakeLists.txt (or whatever the tool’s configuration was) between projects, as I added and when I find a new flag I want to add, or a new static analysis checker, etc., I would have to go and add it to EVERY project.

  • No existing C/C++/CUDA build systems supported doing things like running one or more static analyzers on a repository, formatting the repository, building and running tests, etc., using make check, make format, or make tests, or other simple cmdline syntax.

John Harwell
John Harwell
Researcher and Engineer

Experienced embedded systems engineer whose research interests include multi-agent modeling and behaviors, swarm intelligence, bio-inspired algorithms and multi-robot systems, and computational optimization.