Slam is a simple build system for small C++ projects.
To be honest, it's quite poorly written and I hope to retire it soon in favour of something more powerful. But it works well enough for many of my current projects.
Why another build system?
Traditionally C++ software projects have been built using make or one of its variants. However more and more people are finding that make is simply inadequate for building non-trivial pieces of software.
Therefore in recent years a number of new pieces of software for building C++ projects have been developed. Slam is a build system developed by yours truly that solves a number of make's problems and fills in some of the gaps that exist in the other build systems available today.
Slam is an acronym for Slightly Less Awful Make and has the following features, which I believe are important if not essential for a good C++ build system.
- Automatic dependency management
- Support for multiple compilers and the ability to extend the system to support new ones
- Build description files that are platform and compiler independent as far as is reasonably possible
- Support for multiple and customizable build variants e.g. debug, release, profile, test, or whatever else you need.
- A direct and obvious format for build description files
- Minimal build system overhead when compiling projects
- Support for correct parallel builds
Slam also has basic support for pkg-config. There are a number of other build systems available that each support a subset of these features (and perhaps more besides) but not all of them. And so slam was born.
Certainly, if you’ve ever tried to build a cross-platform makefile that supports multiple compilers, build variants and does at least some kind of crude dependency management, you’re probably aware of the need for systems such as slam.
While slam isn’t the be-all-and-end-all of build systems, it is good at what it does and is easy to use. In fact I would go so far as to say that I think slam would make an excellent system for use in C++ courses at colleges and universities.
Even though I am still working on slam, performing tidy-up work and adding documentation, I believe it is in a usable state right now and so I present the download and installation instructions on the following page. Slam is released under the very liberal Boost Software License, Version 1.0.