All Projects → roxma → Easymake

roxma / Easymake

A handy makefile for simple C/C++ applications

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Easymake

Luci tutorials
An outdated outline of a set of LuCI tutorials. (Updates stopped in 2013)
Stars: ✭ 119 (-4.8%)
Mutual labels:  makefile
Chromium Headless Remote
🐳 Dockerized Chromium in headless remote debugging mode
Stars: ✭ 122 (-2.4%)
Mutual labels:  makefile
Pkgsrc
[Please switch to NetBSD/pkgsrc] Automatically updated conversion of the "pkgsrc" module from anoncvs.netbsd.org
Stars: ✭ 123 (-1.6%)
Mutual labels:  makefile
Arduino.tmbundle
The TextMate Arduino Bundle
Stars: ✭ 119 (-4.8%)
Mutual labels:  makefile
Awesome Dtrace
A curated list of awesome DTrace books, articles, videos, tools and resources.
Stars: ✭ 121 (-3.2%)
Mutual labels:  makefile
Markdown Css
A tool convert css style into markdown inline style
Stars: ✭ 122 (-2.4%)
Mutual labels:  easy-to-use
Kylin Docker
This repository trackes the code and files for building docker image with Apache Kylin.
Stars: ✭ 119 (-4.8%)
Mutual labels:  makefile
Executors
A proposal for a executor programming model for ISO C++
Stars: ✭ 124 (-0.8%)
Mutual labels:  makefile
Genericmakefile
A generic makefile for use with small/medium C and C++ projects.
Stars: ✭ 1,587 (+1169.6%)
Mutual labels:  makefile
Ratifier
Ratifier is a form validation library for Android.
Stars: ✭ 123 (-1.6%)
Mutual labels:  easy-to-use
Hello imgui
Hello, Dear ImGui: cross-platform Gui apps for Windows / Mac / Linux / iOS / Android / Emscripten with the simplicity of a "Hello World" app
Stars: ✭ 120 (-4%)
Mutual labels:  easy-to-use
Freebsd Vscode
Visual Studio Code port for FreeBSD
Stars: ✭ 121 (-3.2%)
Mutual labels:  makefile
I2c Master Lib
This is an I2C master library I wrote for use with AVR 8 bit microcontrollers
Stars: ✭ 122 (-2.4%)
Mutual labels:  makefile
Openwrt Examples
Examples for creating OpenWrt programs&packages.
Stars: ✭ 120 (-4%)
Mutual labels:  makefile
Quickref.dev
Quickref.dev community sources
Stars: ✭ 124 (-0.8%)
Mutual labels:  makefile
Elsmd
Easy lecture slides made difficult with pandoc and beamer
Stars: ✭ 119 (-4.8%)
Mutual labels:  makefile
Machinelearning
An easy neural network for Java!
Stars: ✭ 122 (-2.4%)
Mutual labels:  easy-to-use
List.js
The perfect library for adding search, sort, filters and flexibility to tables, lists and various HTML elements. Built to be invisible and work on existing HTML.
Stars: ✭ 10,650 (+8420%)
Mutual labels:  easy-to-use
Apiproject
[https://www.sofineday.com], golang项目开发脚手架,集成最佳实践(gin+gorm+go-redis+mongo+cors+jwt+json日志库zap(支持日志收集到kafka或mongo)+消息队列kafka+微信支付宝支付gopay+api加密+api反向代理+go modules依赖管理+headless爬虫chromedp+makefile+二进制压缩+livereload热加载)
Stars: ✭ 124 (-0.8%)
Mutual labels:  makefile
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 (+1174.4%)
Mutual labels:  makefile

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
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].