[国嵌笔记][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.通用规则   

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

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

Makefile使用技巧

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

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

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
原文地址:https://www.cnblogs.com/d442130165/p/4889117.html