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.
$ mkdir my_project $ cd my_project $ git clone https://github.com/umake/make.git $ ln -s make/Makefile $ make init
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:
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...)
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!
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.
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
To start using Makeballs, create a
conf directory and download one
conf/makeball.mk available. Then add it in the end of your
... # 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
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.
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.
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.
For all available targets, type:
And it will print a list with all Ultimate Makefile available options.