Cheesemake is a declarative build tool for C/C++ written in Bash. It comes with plugins for serveral static and dynamic validation tools such as cppcheck and valgrind as well as the ability to run custom plugins. Read the article.
- Bash
- jq
- pkg-config
- OpenSSL
I don't intend to provide a portable installation script but you can do something like this:
git clone https://github.com/martinrixham/cheesemake.git
cp -r cheesemake /opt
ln -s /opt/cheesemake/cheesemake /usr/local/bin/cmk
# cmk --help
usage: cmk [clean] <phase>
Cheesemake runs ALL phases in order up to the one specified.
Phases:
validate Run plugins such as static analysis tools.
compile Compile sources in the src directory and output them to build/src.
test Compile and run tests in the test directory.
package Create a binary in build/bin or build/lib.
verify Run plugins such as dynamic analysis tools.
run Run build/bin/<recipe name>.
Do cmk <phase> in the root directory of a project containing a recipe.json file.
Please refer to the examples. There is one for each thing a recipe can say: an executable, a shared library, a static library, a project built from modules, dependencies found with pkg-config, and plugins, including one the project provides itself.
The tests for the script itself build the examples. Run them with ./test/run_tests.sh.