Makefile 编写

通用格式内容
命令列表中的每条命令必须以 TAB 键开始,不能使用空格!
基本书写:

复制代码
main: main.o input.o calcu.o 
    gcc -o main main.o input.o calcu.o
 main.o: main.c
     gcc -c main.c
 input.o: input.c
     gcc -c input.c
 calcu.o: calcu.c
     gcc -c calcu.c

 clean:
     rm *.o
     rm main

在对其进行简化后,如下:

复制代码
 objects = main.o input.o calcu.o
 main: $(objects)
     gcc -o main $(objects)
 
 %.o : %.c
     gcc -c $<

.PHONY : clean
 
 clean:
   rm *.o
   rm main

简化后的程序使用到了变量、通配符:
\< 依赖文件集合中的第一个文件,如果依赖文件是以模式 ( 即" % " ) 定义的,那么 " < "就是符合模式的一系列的文件集合。
使用伪目标的主要是为了避免 Makefile 中定义的只执行命令的目标和工作目录下的实际文
件出现名字冲突,有时候我们需要编写一个规则用来执行一些命令,但是这个规则不是用来创
建文件的。

相关推荐
高山有多高9 小时前
【Linux笔记】Socket编程基础
linux
吴声子夜歌9 小时前
Nginx应用与运维——Nginx Web服务应用实战(Python网站的搭建)
运维·前端·nginx
资深技术分享员10 小时前
Geejing WebBuilder 数据库连接配置与在线 SQL 工具,运维的左右手
运维·数据库·sql·低代码
高山有多高10 小时前
【Linux笔记】UpdSocket
linux·运维·笔记
皓月盈江10 小时前
Linux系统grep、sed 、awk介绍下,使用方法及区别?
linux·运维·服务器·sed·grep·awk
宵时待雨10 小时前
MySQL数据库1:数据库基础
服务器·数据库·mysql
云栖梦泽10 小时前
Linux内存管理
linux·运维·服务器
吴声子夜歌10 小时前
Nginx应用与运维——Nginx Web服务应用实战(静态文件服务器的搭建)
运维·前端·nginx
Lucis__10 小时前
编译链接全链路解析:ELF形成到可执行加载的发展历程
linux·程序·elf文件
海宇服务11 小时前
零信任架构实战:基于海宇身份证OCR构建自动化自助终端核验网关
运维·人工智能·架构·自动化