[国嵌笔记][017][Makefile工程管理]

Makefile的用途

1.make能够使整个程序的编译、链接只需一个命令就可以完成

2.make的工作主要依赖于Makefile的文件。Makefile文件描述了整个程序的编译、链接等规则,使之自动完成。

 

Makefile的构成

1.规则  

targets(目标):prerequisties(依赖)   

  command(命令)  

注意:command前面是[tab]而不是空格,否则执行会出错  

1.伪目标:只有目标和命令,没有依赖的规则称为伪目标,伪目标通常用 .PHONY:targets (也可以不写)标明是一个伪目标  

2.最终目标:如果 make 后面什么都没有跟,则运行第一条规则,这条目标称为最终目标  

3.指定目标:如果只想运行规则中的一条目标,只需要执行 make targets 就只会产生对应的目标

2.变量  

1.在Makefile中多次出现的组成部分,可以用变量来替换  

2.变量的定义:name=file1 file2... , 注意"="两边不要有空格  

3.变量的使用:$(name) 相当于 file1 file2...  

4.系统默认变量   

$@:表示目标(all除外,all不是目标名)   

$^:表示所有的依赖   

$<:表示第一个依赖  

5.通用规则   

如果多条规则的仅只有目标和依赖的文件类型不同,命令都相同,则多条规则可以用一条通用规则替换

1
2
%.o:%.c    
    arm-liunx-gcc -c $^ -o $@

 

Makefile使用技巧

1.去回显,在对应要去回显的命令前面加上@

2.make工具默认情况下只能运行当前目录下的Makefile或makefile文件,当要指定运行其他文件是可以使用"-f"命令  make -f name

1
2
3
4
5
6
7
8
9
10
11
12
obj=led.o
 
all: $(obj)
        arm-linux-ld -Tled.lds $^  -o led.elf
        arm-linux-objcopy -O binary led.elf led.bin
         
%.o : %.S
        arm-linux-gcc -g -c $^ -o $@
         
.PHONY: clean
clean:
        @rm *.o *.elf *.bin

 

posted @   盛夏夜  阅读(244)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示