This package strives to provide clean and easy to understand functions, as well as a transient menu, to build projects of various build systems.
Supported build systems:
- Bazel
- Make
- CMake
- Cargo
- Meson + Ninja
- NPM
build.el provides interactive build commands for each build system. Build commands are prefixed by the name of the build system:
Build system | Prefix |
---|---|
CMake | build-cmake- |
Bazel | build-bazel- |
Make | build-make- |
Cargo | build-cargo- |
Meson+Ninja | build-meson-, build-ninja- |
NPM | build-npm- |
Each build system exposes different amounts of functions, depending on the capability of the build system.
Though in general, where-ever possible, build.el will try to auto-complete possible targets given the context for you.
Make
, only has build-make-run
, which will prompt you for a target that
should be ran, the targets are auto-completed from the Makefile itself.
Bazel
, on the other hand, has build-bazel-run
, build-bazel-test
, and
build-bazel-build
. Running any of the commands will trigger a
completing-read
auto suggestion with matching targets.
CMake
has build-cmake-build
and build-cmake-generate
.
Meson
has build-meson-setup
, compilation is done via build-ninja-build
.
NPM
has build-npm-run
, build-npm-install
and build-npm-uninstall
.
run
, and uninstall
will be autocompleted from the package.json
in the project root.
In general, each build system has it’s own transient menu, these are always
called build-<system>-transient
. Though you will probably want to use
build-menu
, which will try to infer the build system of the current
project and show that instead.
![](https://private-user-images.githubusercontent.com/72092018/368104159-4fd17387-24af-47a2-92a1-2cf7065c73eb.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1MDM2MTAsIm5iZiI6MTczOTUwMzMxMCwicGF0aCI6Ii83MjA5MjAxOC8zNjgxMDQxNTktNGZkMTczODctMjRhZi00N2EyLTkyYTEtMmNmNzA2NWM3M2ViLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDAzMjE1MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQ4NjlmOTZhZDkyZDUzNzNjOTMzOGI0MGExMTQ2ZjAzNjlmYjM1MDA5NTNlNDhlZjM2Yzk1ZTAxOWIzNTM0ZjkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.4kEfIzGtbdeWO62l_udEa_uo9W1x5HwdfnsIyqfLAYI)
![](https://private-user-images.githubusercontent.com/72092018/368104167-9f4a4a7b-c925-4e3d-9acb-45c833a7c7ab.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1MDM2MTAsIm5iZiI6MTczOTUwMzMxMCwicGF0aCI6Ii83MjA5MjAxOC8zNjgxMDQxNjctOWY0YTRhN2ItYzkyNS00ZTNkLTlhY2ItNDVjODMzYTdjN2FiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDAzMjE1MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJjMmNmMzNkNjllZjRkM2YyZjBiY2Q4MzM0OGU4NGEzNmJiNzQzMzZiZDliNGE0ZmM5NTcwODI0YTM2Mzg2ZjQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.NTc3LKUy-rkC_TI7M3dpAPQ53ENe5P2BEvviOkt5QdI)
![](https://private-user-images.githubusercontent.com/72092018/368104170-86409bc6-274e-493a-8950-f880d8bf4822.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1MDM2MTAsIm5iZiI6MTczOTUwMzMxMCwicGF0aCI6Ii83MjA5MjAxOC8zNjgxMDQxNzAtODY0MDliYzYtMjc0ZS00OTNhLTg5NTAtZjg4MGQ4YmY0ODIyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDAzMjE1MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPThlYzUyMzFkMmQ2MTVlNjAzMDZmYzMzYTQ5MzIyMzY5ZmFjYjU5MzJmMmFkZWZkYjg1NDU0YWRmYzM1NTc4NDgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.6JoGe0KkiB9T0C1x0Luj7K7aSJlG7TJU1d3iKvQtxmk)
![](https://private-user-images.githubusercontent.com/72092018/368238865-5de4ec37-6334-4788-9bc8-92cf06666c91.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1MDM2MTAsIm5iZiI6MTczOTUwMzMxMCwicGF0aCI6Ii83MjA5MjAxOC8zNjgyMzg4NjUtNWRlNGVjMzctNjMzNC00Nzg4LTliYzgtOTJjZjA2NjY2YzkxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDAzMjE1MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTA3M2RkZTQ0M2EzZDQ4ZGRlZTUzZTdjYTFhNzMwMzFlZDk2OTRiNWFhMWMwN2FlOWIyZTAxOGIxYzMxNmEwNGImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.LVSHc7-aknGTs7AaHb1IaxLXnx0EhIxShT5wez3_jjs)
![](https://private-user-images.githubusercontent.com/72092018/368238429-08e9c25a-d1f9-4115-b7f7-cf70fc1b8b21.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1MDM2MTAsIm5iZiI6MTczOTUwMzMxMCwicGF0aCI6Ii83MjA5MjAxOC8zNjgyMzg0MjktMDhlOWMyNWEtZDFmOS00MTE1LWI3ZjctY2Y3MGZjMWI4YjIxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDAzMjE1MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWM1ZmYzODY3MTgwOTM1NjM1NDdiMTAzNzE1M2YyZjc0YzY0MmZhMzY4ODczYTYzNjI1MGY3OWQ2N2NlMDc1Y2QmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.nQqJAioqMbXyb9isuFyC5KbpR5dbUzmCeaaYyFCH6_U)
![](https://private-user-images.githubusercontent.com/72092018/368675478-bd46f6eb-6c67-42a8-89da-853b710547b5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1MDM2MTAsIm5iZiI6MTczOTUwMzMxMCwicGF0aCI6Ii83MjA5MjAxOC8zNjg2NzU0NzgtYmQ0NmY2ZWItNmM2Ny00MmE4LTg5ZGEtODUzYjcxMDU0N2I1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDAzMjE1MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQzZmU0M2E3ZGYyZjUwNjY4MzJmODczOTVkZGFjNTdkNmFkODg4YWVjZGMyZDAwMmMxZTkyNDFkZjE3NmYyZjImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.19S0UYWI6B65hUuJPRNQOgV4uNSPx9zZu1FYE-Rs9mw)
Clone the repository:
git clone https://github.com/27justin/build.el ~/.emacs.d/site-lisp/build.el
Add it to your load path
(add-to-list 'load-path "~/.emacs.d/site-lisp/build.el")
(use-package build)
Done.