Makefile文件基本格式

xiaoxiao2021-07-05  220

Makefile 手册 : http://www.gnu.org/software/make/manual/html_node/Concept-Index.html#Concept-Index

 

以下是Makefile的基本模板

#指定编译器 CC = g++ #指定编译参数 CFLAGS = -std=c++11 #指定头文件路径,此处用于指定非标准库的头文件路径 INC = -I./ -I /usr/include #指定要链接的动态库或静态库 -L是指定动态库路径,非标准的动态库需要此参数 LIBS = -lm -ldl -L/mylibs/xxx -lxxx #把上面放一起 CXXFLAGS = ${CFLAGS} ${INC} ${LIBS} #指定生成可执行文件名称 EXEC = a.out #指定由哪些文件来生成可执行文件 OBJS = xxx1.o xxx2.o #make执行动作 ${EXEC} : ${OBJS} #${EXEC} 为生成的目标文件, ${OBJS}表示为生产目标文件的前置条件 ${CC} -o $@ $^ #执行生成目标文件的操作 $@表示 目标文件; $^ 表示所有前置条件 #make clean动作 clean: rm -rf ${OBJS} #中间文件的生成 %.o:%.c # % 为通配符号 $(CC) $(CXXFLAGS) $(INC) -o $@ -c $<

不生成中间.o文件

#指定编译器 CC = g++ #指定编译参数 CFLAGS = -std=c++11 #指定头文件路径,此处用于指定非标准库的头文件路径 INC = -I./ -I /usr/include #指定要链接的动态库或静态库 -L是指定动态库路径,非标准的动态库需要此参数 LIBS = -lm -ldl -L/mylibs/xxx -lxxx #把上面放一起 CXXFLAGS = ${CFLAGS} ${INC} ${LIBS} #指定生成可执行文件名称 EXEC = a.out #指定由哪些文件来生成可执行文件 COBJS = xxx1.c xxx2.c #make执行动作 all: $(CC) -o $(EXEC) $(COBJS) $(CXXFLAGS) #make clean动作 clean: rm -rf ${OBJS}

关于生成  **.o 文件(只编译未链接文件);若是在大型项目中,只修改了其中一个文件的内容,那么没必要全部文件重新编译,只需编译修改部分即可。此时就推荐使用先编译生成 *.o文件  ; 再链接。

转载请注明原文地址: https://www.6miu.com/read-4821395.html

最新回复(0)