Makefile基础

Makefile规则格式

目标:依赖文件集合
命令1
命令2

举例一

将main.c input.c calu.c编译成目标文件main

#Makefile举例
objects = main.o input.o calu.o
main:$(objects)
	gcc –o main $(objects)
%.o:%.c
	gcc –c $<
.PHONY:clean
clean:
	rm *.o
	rm main

①第一行,‘#’用于注释
②第二行,定义了变量objects,并赋值。
③第三行,目标是main,需要依赖变量objects指定的文件。
④第四行,gcc命令执行,将.o文件链接生成目标文件main。当然,也可以写成gcc $(objects) -o $ @”$ @”表示匹配模式中定义的目标文件集合。
⑤第五行,%表示任意长度的非空字符串。目标中的“%”所代表的值决定了依赖中的“%”的值
⑥第六行,“$ <”:依赖文件中的第一个文件,如果依赖文件是以模式(即“%”)定义的,那么”$<”就是依赖文件集合。
⑦第七行,申明clean为伪目标,不管当前目录下是否存在“clean”的文件,执行“make clean”后面的rm都会执行。
⑧第八行,创建clean命令,执行“make clean”,会执行rm相关命令

举例二

创建一个工程目录,”bin”目录下存放生成的”.o”文件,”inc”目录下存放”.h”头文件,”src”目录下存放”*.c”源文件。根目录下编写Makefile文件,生成目标文件”main”

objects=./src/mvss_main.o ./src/mvss_net.o ./src/mvss_usb.o \
		./src/mvss_can.o ./src/mvss_log.o 

CC=arm-linux-gcc

mvss_main:$(objects)
	$(CC) -Wall -lrt -lpthread  $(objects) -o $@
	mv ./src/*.o   ./bin

$(objects): %.o:%.c
	$(CC) -c -g  -Wall -lpthread $< -o $@
.PHONY:clean
clean:
	rm ./bin/*.o  -rf
	rm mvss_main -rf

注意事项

1.Makefile的首字母一定要大写
2.每条命令必须TAB键开始,不能使用空格!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值