最近将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>>,希望对大家有所帮助.
原文:http://www.cnblogs.com/panada/p/4941272.html