Makefile的作用

如果没有Makefile,每次修改源代码后,如果要重新编译代码,都要输入编译命令,当源代码很多时,效率很底下。

基本格式

target: componsnts

TAB rule

main: main.o mytool1.o mytool2.o
gcc -o main main.o mytool1.o mytool2.o

Makefile规则

Makefile由一系列规则组成,规则的结构如下

目标文件 :依赖文件
命令1
命令2
...
命令n

三个有用的变量

  • $@ 目标文件
  • $^ 所有的依赖文件
  • $< 第一个依赖文件

运行Makefile

在你的项目工程目录下创建Makefile或makefile文件,终端下进入工程目录,执行make命令。

会执行你在Makefile里所编写的编译指令

如何只编译修改过的源文件

IDIR =../include # 存放.h结尾文件的目录
CC=gcc
CFLAGS=-I$(IDIR) # 表示gcc在这个目录下寻找.h结尾的文件 ODIR=obj
LDIR =../lib # 存放本地库的目录 LIBS=-lm _DEPS = hellomake.h
DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS)) _OBJ = hellomake.o hellofunc.o
OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ)) $(ODIR)/%.o: %.c $(DEPS)
$(CC) -c -o $@ $< $(CFLAGS) hellomake: $(OBJ)
$(CC) -o $@ $^ $(CFLAGS) $(LIBS) .PHONY: clean clean:
rm -f $(ODIR)/*.o *~ core $(INCDIR)/*~

最新文章

  1. Azure SQL Database (22) 迁移部分数据到Azure Stretch Database
  2. 准备使用 Office 365 中国版--邮箱迁移
  3. Maven之打包时配置文件替换
  4. JSOI 2008 火星人prefix
  5. java post请求
  6. day02 Java基础
  7. Windows server 2008下开启telnet功能
  8. -_-#【Canvas】转成黑白
  9. BOM头问题
  10. Glue4Net简单部署基于win服务的Socket程序
  11. 分别用C/C++实现栈
  12. 分享一个JS的Base64加密解密功能
  13. SpringBoot图片上传(五) 上一篇的新版本,样式修改后的
  14. eclipse maven web
  15. centos6.5修改yum安装的mysql默认目录
  16. windows10 VM12 安装Mac OS X 10.11
  17. github .net core
  18. 编程四剑客awk
  19. &lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=7&quot; /&gt;意思是将IE8用IE7进行渲染,使网页在IE8下正常
  20. 用C扩展Python2

热门文章

  1. mysql_install_db 一次修复密码
  2. 【课程汇总】OpenHarmony 成长计划知识赋能第三期系列课程(附链接)
  3. events.js 源码分析
  4. input清楚阴影 number属性
  5. 2022.02.27 CF811E Vladik and Entertaining Flags(线段树+并查集)
  6. ASP.NETCore统一处理404错误都有哪些方式?
  7. 如何在代码层面提供CPU分支预测效率
  8. XCTF练习题---MISC---Cephalopod
  9. python常见漏洞总结
  10. 完全卸载nginx的详细步骤