easymake

by roxma

roxma / easymake

A handy makefile for simple C/C++ applications

125 Stars 17 Forks Last release: Not found 17 Commits 0 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

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.
  • Simple third party dependencis management.

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

basics

Unit Testing

Files with

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

unit_test

Multi Entries

multi_entries

Options

Easymake is trying to follow the Makefile Conventions (1) (2). The following options are supported.

  • CFLAGS
    Extra flags to give to the C compiler.
  • CXXFLAGS
    Extra flags to give to the C++ compiler.
  • LDFLAGS
    Extra flags to give to compilers when they are supposed to invoke the linker
  • LDLIBS
    Library flags or names given to compilers when they are supposed to invoke the linker
  • ARFLAGS
    Flags to give the archive-maintaining program; default
    cr

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

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.