Skip to content

mcandre/rez

Repository files navigation

rez: C/C++ task runner

 `_~----====-.
  \ <.+|*-*| '
 /&( ``
 \3

SUMMARY

rez runs C/C++ tasks.

Where other runners depend on managing secondary DSL's, rez collapses the software stack. Implement your build scripts in the same language as your application.

Maximize expressiveness, minimize bloat.

DEMO

$ cd examples/athena
$ rez

   ...    *    .   _  .
*  .  *     .   * (_)   *
  .      |*  ..   *   ..
   .  * \|  *  ___  . . *
*   \/   |/ \/{0,Q}     .
  _\_\   |  / /)  )* _/_ *
      \ \| /,--"-"---  ..
_-----`  |(,__,__/__/_ .
       \ ||      ..
        ||| .            *
        |||
        |||
  , -=-~' .-^- _

Must be expensive.

See the full TUTORIAL.md.

ABOUT

rez allows developers to write build tasks in pure C/C++ code. This streamlines software builds. For example, common shell-outs to rm / del... become std::filesystem::remove_all in C++. As you migrate from shell scripts to native code, you are rewarded with faster, more reliable builds.

rez is build tool agnostic. rez simply wraps your traditional build tool of choice. For example, rez tasks can invoke direct compiler commands like gcc, or invoke an underlying build tool like cmake, make, ./configure, msbuild, etc.

DOCUMENTATION

https://mcandre.github.io/rez/

DOWNLOAD

https://github.com/mcandre/rez/releases

LICENSE

BSD-2-Clause

RUNTIME REQUIREMENTS

  • a C/C++ compiler

rez is regularly tested for cross-platform support on Linux, macOS, and Windows.

Recommended

CONTRIBUTING

For information about developing rez itself, see DEVELOPMENT.md.

SEE ALSO

  • batsch, a preprocessing language that compiles to bash and MS-DOS bat files (somewhat defunct)
  • beltaloada, a guide to writing build systems for (POSIX) sh
  • booty for JS/Node.js/altJS
  • cling, a C++ interpreter
  • cmake, a preiminent cross-platform build system
  • dale, a D task runner
  • ejm98 for Athena's prior artwork
  • GNU autotools, a build system for Linux C/C++ projects
  • Gradle, a build system for JVM projects
  • jelly, a JSON task runner
  • lake, a Lua task runner
  • Leiningen + lein-exec, a Clojure task runner
  • lichen, a sed task runner
  • Mage, a task runner for Go projects
  • mian, a task runner for (Chicken) Scheme Lisp
  • npm, Grunt, Node.js task runners
  • nobuild, another freeform C/C++ task runner
  • POSIX make, a task runner standard for C/C++ and various other software projects
  • Rake, a task runner for Ruby projects
  • Rebar3, a build system for Erlang projects
  • Not to be confused with Rezz, the DJ
  • sail, a fast C/C++ source file identifier
  • sbt, a build system for Scala projects
  • Shake, a preiminent Haskell task runner
  • stank, a collection of POSIX-y shell script linter tools
  • tinyrick, a Rust task runner
  • WSL / Cygwin / MinGW / MSYS2 / Git Bash / Strawberry Perl provide shims for many GNU/Linux components on Windows hosts
  • yao, a task runner for Common LISP projects

Generate and retire artifacts, like so many tears in the rain...