Skip to content

roxma/easymake

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 

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

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

About

A handy makefile for simple C/C++ applications

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published