Skip to content

Latest commit

 

History

History
70 lines (52 loc) · 1.96 KB

README.md

File metadata and controls

70 lines (52 loc) · 1.96 KB

Maud

Maud simplifies building C++ projects by reducing configuration boilerplate.

$ ls
hello.cxx

$ cat hello.cxx
#include <iostream>

import executable;

int main() {
  std::cout << "hello world!" << std::endl;
}

$ maud --quiet

$ .build/Debug/hello
hello world!

Maud bootstraps a cmake build directory with excellent defaults and batteries included. Maud makes building with C++20 modules straightforward. Other features include performant and expressive globbing, first class support for generated files, inference of compilation/link/test targets from source files, built-in targets for rendering gorgeous documentation, expanded capabilities for declaring and resolving build options, and more.

Getting Started

Maud is itself a Maud-based project. Build with:

$ git clone https://github.com/bkietz/maud.git && cd maud

# get dependencies with flox
$ flox activate

$ maud --log-level=VERBOSE # Pass cmake -D options etc here

# optionally, install:
$ cmake --install .build --config Debug

Maud uses Ninja Multi-Config by default, but recent versions of MSVC/Visual Studio also support C++20 modules.

If you don't already have the maud executable on your PATH, you can bootstrap using:

$ cmake -P cmake_modules/maud_cli.cmake -- --log-level=VERBOSE
# ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
#   (the maud executable is just an alias for this anyway)

(TODO link to rendered docs) To build the documentation, install the python dependencies in cmake_modules/sphinx_requirements.txt and Doxygen. When the dependencies are detected, rendering documentation will be added to the build step.