博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个通用的Makefile(针对非模块类-pro)
阅读量:5230 次
发布时间:2019-06-14

本文共 1107 字,大约阅读时间需要 3 分钟。

       makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具。

       本文提供的Makefile文件主要针对简单的linux平台下的C语言程序。而且是针对非模块类程序(该中下一博文中介绍)。

 

SRCS = $(wildcard *.c)OBJS = $(SRCS:.c = .o)CC = gccINCLUDES = -I/home/lewiyon/build/includeLIBS = -L/home/lewiyon/build/lib -lpthreadCCFLAGS = -g -Wall -O0main : $(OBJS)	$(CC) $^ -o $@ $(INCLUDES) $(LIBS) %.o : %.c	$(CC) -c {1}lt;; $(CCFLAGS) clean:	-rm *.o	-rm main

解析:

       第一行会产生一个所有以 '.c' 结尾的文件的列表,然后存入变量SRCS里。当然不需要一定把结果存入一个变量。

       第二行会产生一个所有以 '.o' 结尾的文件的列表,然后存入变量OBJS中。即SRCS中变量列表中的所有的".c"变成".o"存入OBJS变量中。

       第三行表示编译器是GCC。

       第四行与第五行指定除了编译器默认的头文件和库文件的路径之外需要额外引用的头文件路径以及库的路径;可不设定。

       第六行表示CC编译器的编译选项。

       第七行、第九行分别表示main的生成依赖于文件列表OBJS;.o文件的生成依赖于.c文件.

       第八行表示main依赖于所有的.o文件,$^代表$(OBJS),$@代表main。

       第十行表示将所有的.c源代码编译成.o目标文件。亦可使用 $(CC) -c {1}lt; $(CCFLAGS) 

       第十一、十二行表示如使用命令make clean,则删除main,及.o文件。-rm表示忽略错误。

  $* 不包含扩展名的目标文件名称。  $+ 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。  $< 第一个依赖文件的名称。  $? 所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。  $@ 目标的完整名称。  $^ 所有的依赖文件,以空格分开,不包含重复的依赖文件。  $% 如果目标是归档成员,则该变量表示目标的归档成员名称。

 

 

转载于:https://www.cnblogs.com/youngerchina/archive/2012/02/12/5624628.html

你可能感兴趣的文章
Java学习不走弯路教程(13 HTTP服务器)
查看>>
[LeetCode] 733. Flood Fill_Easy tag: BFS
查看>>
uptime命令_打印系统总共运行了多长时间和系统的平均负载
查看>>
自定义alert弹框,title不显示域名
查看>>
Linux sed 命令字符串替换使用方法详解
查看>>
Nested Loops join时显示no join predicate原因分析以及解决办法
查看>>
Mybatis遇到的坑
查看>>
loj题目总览
查看>>
mutillidae之Insert型注入
查看>>
python基础:面向对象
查看>>
编译安装 LLVM
查看>>
2019-06-07 学习日记 day28 THML
查看>>
Books
查看>>
C 语言代码规范
查看>>
Google Reader 7.1停止服务
查看>>
netty 粘包问题处理
查看>>
http协议
查看>>
两进程的binder应用
查看>>
python3 购物车程序
查看>>
pthread_create 内存泄漏 valgrind
查看>>