Makefile基础语法
2024-10-19 20:21:21
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)/*~
最新文章
- Azure SQL Database (22) 迁移部分数据到Azure Stretch Database
- 准备使用 Office 365 中国版--邮箱迁移
- Maven之打包时配置文件替换
- JSOI 2008 火星人prefix
- java post请求
- day02 Java基础
- Windows server 2008下开启telnet功能
- -_-#【Canvas】转成黑白
- BOM头问题
- Glue4Net简单部署基于win服务的Socket程序
- 分别用C/C++实现栈
- 分享一个JS的Base64加密解密功能
- SpringBoot图片上传(五) 上一篇的新版本,样式修改后的
- eclipse maven web
- centos6.5修改yum安装的mysql默认目录
- windows10 VM12 安装Mac OS X 10.11
- github .net core
- 编程四剑客awk
- <;meta http-equiv=";X-UA-Compatible"; content=";IE=7"; />;意思是将IE8用IE7进行渲染,使网页在IE8下正常
- 用C扩展Python2
热门文章
- mysql_install_db 一次修复密码
- 【课程汇总】OpenHarmony 成长计划知识赋能第三期系列课程(附链接)
- events.js 源码分析
- input清楚阴影 number属性
- 2022.02.27 CF811E Vladik and Entertaining Flags(线段树+并查集)
- ASP.NETCore统一处理404错误都有哪些方式?
- 如何在代码层面提供CPU分支预测效率
- XCTF练习题---MISC---Cephalopod
- python常见漏洞总结
- 完全卸载nginx的详细步骤