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 中定义的只执行命令的目标和工作目录下的实际文
件出现名字冲突,有时候我们需要编写一个规则用来执行一些命令,但是这个规则不是用来创
建文件的。

相关推荐
石头53038 分钟前
Rocky Linux 9.6 docker k8s v1.23.17 kubeadm 高可用部署文档
linux
松涛和鸣40 分钟前
49、智能电源箱项目技术栈解析
服务器·c语言·开发语言·http·html·php
凉、介43 分钟前
SylixOS 中的 Unix Socket
服务器·c语言·笔记·学习·嵌入式·sylixos
RisunJan1 小时前
Linux命令-ipcs命令(报告进程间通信(IPC)设施状态的实用工具)
linux·运维·服务器
春日见2 小时前
控制算法:PP(纯跟踪)算法
linux·人工智能·驱动开发·算法·机器学习
HABuo2 小时前
【Linux进程(四)】进程切换&环境变量深入剖析
linux·运维·服务器·c语言·c++·ubuntu·centos
oMcLin2 小时前
如何在 Rocky Linux 8.7 上通过 Prometheus 与 Grafana 结合,提升大规模容器环境的监控与性能分析?
linux·grafana·prometheus
橘颂TA2 小时前
【Linux】死锁四条件的底层逻辑:从锁冲突到 STL 组件的线程安全实践(Ⅵ)
linux·运维·服务器·c++·死锁
埃伊蟹黄面2 小时前
ELF深入解剖:从文件头到动态段,图解库的二进制构成
linux·c·