All Projects → umake → make

umake / make

Licence: Apache-2.0 license
The Ultimate Makefile to compile all your C, C++, Assembly and Fortran projects

Programming Languages

Makefile
30231 projects
shell
77523 projects
C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
fortran
972 projects

Projects that are alternatives of or similar to make

Reggae
Build system in D, Python, Ruby, Javascript or Lua
Stars: ✭ 141 (+243.9%)
Mutual labels:  build-tool, make, build-system
Mmake
Mmake is a small program which wraps make to provide additional functionality, such as user-friendly help output, remote includes, and eventually more. It otherwise acts as a pass-through to standard make.
Stars: ✭ 1,593 (+3785.37%)
Mutual labels:  build-tool, make, build-system
makesure
Simple task/command runner with declarative goals and dependencies
Stars: ✭ 230 (+460.98%)
Mutual labels:  build-tool, make, build-system
Arduino Cmake Ng
CMake-Based framework for Arduino platforms
Stars: ✭ 123 (+200%)
Mutual labels:  build-tool, make, build-system
Walk
A fast, general purpose, graph based build and task execution utility.
Stars: ✭ 108 (+163.41%)
Mutual labels:  build-tool, make, build-system
Please
High-performance extensible build system for reproducible multi-language builds.
Stars: ✭ 1,856 (+4426.83%)
Mutual labels:  build-tool, build-system
Style Dictionary
A build system for creating cross-platform styles.
Stars: ✭ 2,097 (+5014.63%)
Mutual labels:  build-tool, build-system
elite
Fegeya Elitebuild, small, powerful build system. Written in Rust.
Stars: ✭ 24 (-41.46%)
Mutual labels:  build-tool, build-system
Zeus
An Electrifying Build System
Stars: ✭ 176 (+329.27%)
Mutual labels:  build-tool, make
Mill
Your shiny new Java/Scala build tool!
Stars: ✭ 1,667 (+3965.85%)
Mutual labels:  build-tool, build-system
Bear
Bear is a tool that generates a compilation database for clang tooling.
Stars: ✭ 2,345 (+5619.51%)
Mutual labels:  build-tool, build-system
Build
B2 makes it easy to build C++ projects, everywhere.
Stars: ✭ 182 (+343.9%)
Mutual labels:  build-tool, build-system
systemjs-tools
(dev)tools for working with SystemJS
Stars: ✭ 41 (+0%)
Mutual labels:  build-tool, build-system
Blade Build
Blade is a powerful build system from Tencent, supports many mainstream programming languages, such as C/C++, java, scala, python, protobuf...
Stars: ✭ 1,722 (+4100%)
Mutual labels:  build-tool, build-system
craftr
The core framework for the Craftr build system.
Stars: ✭ 1 (-97.56%)
Mutual labels:  build-tool, build-system
b2
B2 makes it easy to build C++ projects, everywhere.
Stars: ✭ 38 (-7.32%)
Mutual labels:  build-tool, build-system
Foy
A simple, light-weight and modern task runner for general purpose.
Stars: ✭ 157 (+282.93%)
Mutual labels:  build-tool, make
up
UP - Ultimate Provisioner CLI
Stars: ✭ 43 (+4.88%)
Mutual labels:  build-tool, make
Pants
The Pantsbuild developer workflow system
Stars: ✭ 1,814 (+4324.39%)
Mutual labels:  build-tool, build-system
Build Harness
🤖Collection of Makefiles to facilitate building Golang projects, Dockerfiles, Helm charts, and more
Stars: ✭ 236 (+475.61%)
Mutual labels:  build-tool, build-system

Ultimate Makefile

Build Status Build status Release

The Ultimate Makefile to compile all your C, C++, Assembly and Fortran projects.

Tired of installing aditional tools to compile your projects? (Automake, CMake and Ant). Missing the old days, when all you needed to do was typing make? Here is the solution! A single generalized Makefile which aims to compile and mix almost everything related to C, C++, Assembly and Fortran projects - with support to many executables, static and shared libraries, lexer and parser generators, dependency management,file creation and much more! Everything just 4 letters away from you.

TL;DR

$ mkdir my_project
$ cd my_project
$ git clone https://github.com/umake/make.git
$ ln -s make/Makefile
$ make init

Starting

Good tools are simple. That's why make is so successful. And that's the goal of Ultimate Makefile.

In order to start, just download the Makefile:

curl -O https://raw.githubusercontent.com/umake/make/master/Makefile

To begin a new project, just type:

make init

A group of directories and a git repository are now ready for you!

But how about configuring your project settings? Config.mk presents a self-explanatory set of variables used by Ultimate Makefile to perform all its magic. And the best: everything within the Make language - no extra parsers nor extra programs. Just one single Makefile.

In order to make your very first compilation, just create a .c, .cpp, .asm or .f (or any of the many source extensions available) and voilà: it will compile everything perfectly ( or at least as perfect as your program is...)

Single-directory projects

Do you have old single-directory code that is getting out of control? We also have a solution! make standard checks and separates your files in our default directory structure. Improve your organization (and use a great new tool) with almost no work!

Git submodule

To keep a copy of this project as a submodule, just clone it in your working directory:

git clone https://github.com/umake/make.git

Then, create a symbolic link:

ln -s make/Makefile

make init will automatically add it as a submodule.

Makeballs

Using frameworks or libraries may be tricky, even with a easy-to-use tool as Ultimate Makefile. We need to read documentations and find where headers and libraries are located in a world of complicated and almost no standardized projects. So why not reusing these flags? That's where Makeballs come in!

To start using Makeballs, create a conf directory and download one of the conf/makeball.mk available. Then add it in the end of your Config.mk:

...
# Makeball list
# ===============
include conf/makeball_1.mk
include conf/makeball_2.mk

If you cloned make to be used as a git submodule, all Makeballs are already available for you! Just create a symbolic link:

ln -s make/conf/

And include them as above.

Didn't find your favorite library?

Then just create you own Makeball! conf/makeball.mk provides the most complete set of variables that could be used to add functionalities to Ultimate Makefile. Even better: make a pull request and contribute reducing the work of others (and yourself) in the future.

Administrative Issues

Getting the latest version

To get the latest version, just type make upgrade and the newest Makefile will be automatically downloaded. If it is a submodule, the same procedure will do it.

Portability

This Makefile is currently being tested under projects developed mainly in C++ within Ubuntu Linux, Arch Linux, MAC OS X and Windows. Tests have already been done in purely C and C/C++ projects. To report compatibility problems, check the session below.

Bug report and Contributions

Any error or bug can be reported by opening an Issue. In order to contribute, make a pull request.

More info

For all available targets, type:

make projecthelp

And it will print a list with all Ultimate Makefile available options.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].