A framework for building projects based on GNU make
Install mm to a prefix of your choice:
./install.sh /path/to/prefixFor example, to install to ~/.local:
./install.sh ~/.local
export PATH="$HOME/.local/bin:$PATH"mm supports tab completion for build targets and options. To enable it during installation:
./install.sh ~/.local --bash-completionAfter installation, you may need to restart your shell or manually source the completion script:
source ~/.local/share/bash-completion/completions/mmIf you're working on mm from source, you can test the completion without installing:
source etc/bash_completion/mm
./mm <TAB> # Now tab completion worksThe bash completion for mm provides:
- Target completion: Press TAB to see available make targets from your mm project
- Option completion: Complete mm command-line options (e.g.,
--target,--prefix) - Value completion: Smart suggestions for option values (e.g.,
--target=<TAB>suggests debug, opt, shared, etc.)
The completion works by:
- Detecting mm projects (directories with
.mm/subdirectories) - Using
make -npqto extract available targets from the makefile database - Filtering out internal/special targets to show only user-relevant targets
Note: Target completion requires that mm and its dependencies (pyre) are properly configured in your environment. If mm cannot run, the completion will fall back to common target names (all, clean, test, install, etc.).
See the documentation in docs/ for detailed usage information.
Quick start:
cd your-project
mm # Build with default targets (debug, shared)
mm test # Run tests
mm --target=opt # Build optimized variant