一个实用的MakeFile文件

从项目中总结到一个非常实用的Makefile文件,分享如下:

CC=g++
S = $(wildcard *.h)
C_SRCS = $(wildcard *.c)
CPP_SRCS = $(wildcard *.cpp)
CXX_SRCS = $(wildcard *.cxx)
OBJS = $(patsubst %.cpp, %.o, $(CPP_SRCS)) $(patsubst %.c, %.o, $(C_SRCS)) $(patsubst %.cxx, %.o, $(CXX_SRCS))

TARGET=calcutor

%.o:%.cxx
	$(CC) -c $< -o [email protected]

all:$(OBJS)
	$(CC) $^ -o $(TARGET)

clean:
	rm -rf *.o $(TARGET)

先做一点Makefile文件基本知识介绍:

1、[email protected]表示目标文件,$^ 代表全部依赖文件,>lt; 代表第一个依赖文件

2、wildcard的单词意思是"通配符",第3行指定C_SRCS是指所有以".c"为后缀的源文件;第4行指定CPP_SRCS是指所有以".cpp"为后缀的源文件;第5行指定CXX_SRCS是指所有以".cxx"为后缀的源文件;第6行的作用是指定所有".c"、"cpp"、"cxx"源文件将后缀改为".o"后作为OBJS的值。

3、第10、11行的作用是将所有的.cxx文件编译为.o文件

使用:

如果我们项目中只包含add.cxx add.h main.cxx makefile, 使用步骤如下图:

一个实用的MakeFile文件