easymake
easymake copied to clipboard
A handy makefile for simple C/C++ applications
Easymake
Introduction
Easymake is a handy makefile for C/C++ applications on Linux system. For simple applications, you don’t even need to write a single line of makefile code to build your target with easymake.
Features description:
- Finds and compiles all C/C++ source files in the directory recursively (optional). Places the object files and target files in a separate directory.
- Only re-compiles the changed and affected source files. That is, if you
modify your header
foo.h, all your source files with#include "foo.h"will be re-compiled. - Supports Simple unit testing.
- Handles more than one entry point in the project.
- Support both static library(libfoo.a) and shared library(libfoo.so) building.
NOTICE: Easymake is designed to be easy to use on simple applications, not as a highly flexible or extensible template. If you want more customization, you might need to look for a small and simple example for start.
Getting Started
Basics
git clone https://github.com/roxma/easymake
cd easymake/samples/basics
cp ../../easymake.mk Makefile
make
./bin/add # if you rename add.cpp to myprogram.cpp, then you get ./bin/myprogram.cpp

Unit Testing
Files with *_test.cpp or *_test.c pattern will be used for testing
(inspired by golang).

Multi Entries

Options
Easymake is trying to follow the Makefile Conventions (1) (2). The following options are supported.
CFLAGSExtra flags to give to the C compiler.CXXFLAGSExtra flags to give to the C++ compiler.LDFLAGSExtra flags to give to compilers when they are supposed to invoke the linkerLDLIBSLibrary flags or names given to compilers when they are supposed to invoke the linkerARFLAGSFlags to give the archive-maintaining program; defaultcr
Recommended Style
In the GIFs, I simply copy easymake.mk into my souce code directory as a
makefile. However, for code simplicity, I recommend the following style:
CXXFLAGS=-O2
# other options
# ...
include /path/to/easymake.mk