linux Makefile编写的整理

时间:2022-09-29 12:49:55

最近将Makefile的编写进行了整理和提炼了一下,大致分为五个步骤:

编译总共为五个部分
 1.设置编译环境 set compile environment
 2.获取要编译的源文件,以及把源文件转换为目标文件 ( 源文件和目标文件) source to obj
 3.将文件编译为目标文件 OBJing
 4.目标文件链接成可执行文件或(打包为)动态库,或静态库  linking
 5.其他方面 clean等

下面给出一个简单的makefile模板(实际项目中可依照此模板进行扩展):

来看看这个模板:

 1 ## 设置编译环境
2 CC:=gcc
3 CXX:=g++
4 BIN:= libdemo.so
5 FLAGS             := -Wall -g -fPIC
6 CXX_FLAGS     := -Wall -g -pipe -fPIC -shared -export-dynamic
7 LIB                   := -L../common/test/ -ltest
8 INCLUDE_PATH    := -I/common/ -I../common/test/ 
9
10 ## 获取要编译的源文件,以及把源文件转换为目标文件
11 SOURCES            := $(wildcard *.c *.cpp)
12 OBJS             := $(patsubst %.c, %.o, $(patsubst %.cpp,%.o,$(SOURCES)) )
13
14 ## 将源文件编译为目标文件
15 %.o: %.c
16     $(CC) $(FLAGS) -c $< -o $@ $(INCLUDE_PATH)
17
18 %.o:%.cpp
19     $(CXX) $(FLAGS) -c $< -o $@ $(INCLUDE_PATH)
20
21 ## 将目标文件链接成可执行文件或动态库,或静态库
22 $(BIN) : $(OBJS) 
23     $(CXX) $(CXX_FLAGS) $(OBJS) $(INCLUDE_PATH) $(LIB) -o $(BIN)
24     chmod a+x $(BIN)
25
26 ## 其他
27 clean:
28     rm -rf *.o $(BIN)
29       
30 install:
31     cp $(BIN) ../common/bin

 

当然,makefile的入门还是推荐陈皓老师的<<跟我一起写makefile>>,希望对大家有所帮助.