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

相关推荐
明亮 Blog4 小时前
Wi-Fi 6/7的物联网“芯”机遇:高带宽低延时如何重塑智慧工厂的AGV物流革命
服务器·网络·数据库
杜子不疼.4 小时前
N5105小主机只装NAS太浪费?我把它改成了All-in-One家庭服务器
运维·服务器
笑锝没心没肺4 小时前
提升CPU平均使用率(自用)
linux·运维
宵时待雨4 小时前
linux笔记归纳9:进程间通信
linux·服务器·笔记
Zhang~Ling4 小时前
深入学习Linux: 命令行参数与环境变量详解
linux·服务器
会飞的小新4 小时前
《深入理解 DDR Memory Margin》系列之第四章 从 Bit Error 到 ECC——服务器为什么能够发现内存错误?
运维·服务器
Shadow(⊙o⊙)4 小时前
日志与线程池
linux·c++·算法
无锡银洲自动化5 小时前
烟气监测取样频繁堵管?防堵取样器解决工业运维通病
运维·产品运营
樂禮5 小时前
Windows-Arch Linux 键鼠共享 & 剪贴板同步配置
linux·运维·windows
CHANG_THE_WORLD5 小时前
Linux C 多线程 TCP 并发服务器:从 `accept()` 到工作线程的完整解析
linux·服务器·c语言