2Makefile

简介:  1关于Makefile,在编写Makefile的时候,Makefile这个名称第一个字母要大写。并且必须是Makefile.一个Makefile就相当于: #目标:依赖(条件) #       命令     à注意这里前面是一个tab 2案例: A:创建一个项目calc,案例项目结构如下: B编写mul.c C编写


1关于Makefile,在编写Makefile的时候,Makefile这个名称第一个字母要大写。并且必须是Makefile.一个Makefile就相当于:

#目标:依赖(条件)

#       命令     à注意这里前面是一个tab

2案例:

A:创建一个项目calc,案例项目结构如下:

B编写mul.c

C编写sub.c

D编写add.c

E编写dive.c

F编写main.c

G编写common.h

3.编写Makefile

阶段1

阶段2

阶段3

运行结果:

#阶段4

#定义变量,下面一句表示指定头文件所在的位置加载头文件,-l头文件包名

CPPFLAGS = -Iinclude

#加上-g表示调试模式,通过它可以看到源代码,在项目发布的时候去掉-g,-Wall严格编译

CFLAGS = -g -Wall

LDFLAGS=

#表示使用

CC=gcc

#表示如果是arm下,gcc可能是下面这个编译器

#CC=arm-linux-gcc

 

#$(wildcard *.c)表示当前目录下的所有.c文件

src = $(wildcard *.c)

#下面的意思是将所有的.c文件替换成为.o文件

obj = $(patsubst %.c,%.o,$(src))

target = app

 

#程序最终编译成app,依赖$(obj),而需要执行的命令是紧接着的下面一句,$^表示所有的依赖,$@表示要生成的目标,这句的目标是$(target),也就是app文件

$(target):$(obj)

         $(CC)S^ $(LDFLAGS) -o $@

 

#$<表示一个的编译成目标文件$@

%.o:%.c

         $(CC)-c $< $(CFLAGS) $(CPPFLAGS) -o $@

 

#通过这种方式避免和当前已存在的clean文件冲突,下面声明的是一个伪目标

.PHONY:clean

 

#彻底清除生成过程文件

clean:

         -rm-f *.o

         -rm-f app

#彻底清除过程文件和生成配置文件

distclean:

         rm/usr/bin/app

install:

         cpapp /usr/bin

 

 

目录
相关文章
|
存储 安全 数据管理
Linux文件时间戳:解析时区与修改时间的相互作用
Linux文件时间戳:解析时区与修改时间的相互作用
312 2
|
机器学习/深度学习 存储 监控
「Arm Arch」 初识 Arm(上)
「Arm Arch」 初识 Arm(上)
1234 1
|
容器
layui框架实战案例(14):tabs选项卡切换时echarts拉伸变形无法正常显示的解决方案
layui框架实战案例(14):tabs选项卡切换时echarts拉伸变形无法正常显示的解决方案
461 0
|
Oracle JavaScript Java
JDK的版本迭代特性(JDK9 - JDK20)
JDK的版本迭代特性(JDK9 - JDK20)
|
人工智能 自然语言处理
详解:天宫ai官方网站_天宫官网ai入口是什么
天宫AI,正如其名,是昆仑万维精心打造的一款大型语言模型,目标直指 OpenAI 的 ChatGPT,立志成为中文 AI 领域的佼佼者! 其官网 tiangong.cn 已经敞开大门,迎接探索者们。
|
Cloud Native 关系型数据库 分布式数据库
阿里云牵手海亮科技,共建“教育科技数据库创新应用中心”
近日,阿里云与世界500强旗下、国内领先的教育服务提供商海亮科技集团(以下简称“海亮科技”)达成合作,联合成立“教育科技数据库创新应用中心”。双方将充分整合优势资源,共同推进教育科技领域的数据库技术研究和国产数据库的应用与发展。
293 8
|
人工智能 监控 Cloud Native
【涂鸦即艺术】基于云应用开发平台 CAP 部署 AI 实时生图绘板
本实验介绍如何使用阿里云的云原生应用开发平台CAP、函数计算FC和日志服务SLS,三步创建AI实时绘画平台。
【涂鸦即艺术】基于云应用开发平台 CAP 部署 AI 实时生图绘板
|
运维 持续交付 开发工具
基础设施即代码(IaC):自动化基础设施管理的未来
基础设施即代码(IaC):自动化基础设施管理的未来
496 0
|
边缘计算 自动驾驶 物联网
5G 如何实现大规模天线阵列:赋予无线通信全新力量
5G 如何实现大规模天线阵列:赋予无线通信全新力量
853 0
|
小程序 API
微信小程序如何访问私读文件
微信小程序如何访问私读文件
635 0