c/c++简单项目通用makefile
目录结构
- src: 源文件目录
- include: 头文件目录
- bin: 可执行文件目录
- obj: 目标文件目录
- dependency: 单个源文件makefile目录,用于自动生成依赖
- .gitignore: 用于git忽略构建相关文件,包括bin/, obj/以及dependency/
.
|-- src/
|-- include/
|-- bin/
|-- obj/
|-- dependency/
|-- Makefile
|-- .gitignore
Makefile内容
本makefile是针对gmake编写的,对于其他版本的make工具可能会存在不兼容问题。其中的TARGET变量指定了可执行程序的文件名。此makefile假设源文件后缀名为cpp,如果存在其他后缀名比如c,可以对makefile进行简单修改来支持其他后缀。通过使用自动生成依赖的方法,源文件对于头文件的依赖能够通过#include语句自动推导,在文件修改时减少了不必要的重新编译链接,详细解释见注释。
OBJ_DIR := obj
SRC_DIR := src
BIN_DIR := bin
INCLUDE_DIR := include
DEPENDENCY_DIR := dependency
CXX := g++
CXXFLAGS := -std=c++11 -g -Wall -I./$(INCLUDE_DIR) -DDEBUG
LDLIBS :=
SRC