工程通用makefile简单实现
最近学习了一下makefile,总结了一些经验,自己试着写了一套简单通用的软件工程makefile,总结下来以后可能会用到。
我的工程目录是这样的结构:
顶层目录是app/,app/include/存放公共的头文件,app/lib/存放公共的.a,app/obj/存放下层模块编译出的.a。
app层下面有三个模块分别是init,mod1,mod2。各模块编译出的.o放在obj下面,然后链接成.a文件放到上一级目录的obj下面。
app层通过链接lib和obj下面所有的.a来生成可执行文件。
模块目录下面的makefile:
DIR_INC = ./inc ../mod1/inc ../mod2/inc
DIR_SRC = ./src
DIR_OBJ = ./obj
DIR_BIN = ../obj
TARGET = $(DIR_BIN)/libinit.a
INCLUDE += $(DIR_INC)
DEFINES +=
CC ?= gcc
CFLAGS ?= -Wall
AR ?= ar
ARFLAG ?= -cr