Linux_项目自动化构建工具-make/makefile

Makefile是项目自动化构建的核心,通过定义编译规则,实现一键编译。本文介绍了如何创建单文件和多文件的Makefile,包括依赖关系、伪目标`.PHONY`以及特殊变量`$@`、`$^`、`$<`的使用。通过`make clean`可以方便地清理临时文件,提升开发效率。

make是解释makefile中的指令的工具

make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建

makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了效率。

1.单文件makefile

首先在项目中 touch makefile(Makefile)文件,然后再makefile文件中写出依赖的编译关系
eg:
在这里插入图片描述
生成的项目为Test,Test依赖test.c

makefile文件格式:
链接关系,之间以冒号连接
Tab键+依赖方法
在这里插入图片描述
之后要重编译项目代码只用在项目中make即可
在这里插入图片描述
如果项目中有临时文件想要删除,只要在makefile文件夹中写出clean的依赖方法。

2.make clean

假设项目生成了很多临时文件
在这里插入图片描述
在这里插入图片描述想要删除
在这里插入图片描述
在这里插入图片描述

3.伪目标.PHONY

在项目中如果项目没有更新,则只能make一次。如果将其改为伪目标,则其不管项目有没有更新都可以make

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

注意:.PHONY只作用于下一行,如上图

4.多文件makefile

在这里插入图片描述
与单文件类似,依赖关系之间要以空格形式隔开

在这里插入图片描述

5.$@ $^ $<

$@:依赖关系中的目标文件

$^:依赖关系中的依赖文件列表

$<:依赖文件列表中的一个个的依赖文件

eg:
在这里插入图片描述

make -C /data/test_wifi8_docker/Iplatform/openwrt/build_dir/target-arm-openwrt-linux-uclibc-bn800v1/bluetopia-profiles-4.2 all "CC=arm-buildroot-linux-gnueabihf-gcc" "GLOBLDFLAGS=-L/data/test_wifi8_docker/Iplatform/openwrt/staging_dir/target-arm-openwrt-linux-uclibc-bn800v1/usr/lib -L/data/test_wifi8_docker/Iplatform/openwrt/staging_dir/target-arm-openwrt-linux-uclibc-bn800v1/lib -Wl,-rpath-link,/data/test_wifi8_docker/Iplatform/openwrt/staging_dir/target-arm-openwrt-linux-uclibc-bn800v1/usr/lib -L/data/test_wifi8_docker/Iplatform/openwrt/../../bcm620L/toolchains/opt/toolchains/crosstools-arm_hf-gcc-13.2-linux-5.15-glibc-2.38-binutils-2.41/usr/lib -L/data/test_wifi8_docker/Iplatform/openwrt/../../bcm620L/toolchains/opt/toolchains/crosstools-arm_hf-gcc-13.2-linux-5.15-glibc-2.38-binutils-2.41/lib -luci -mfloat-abi=softfp" "GLOBINCLDDIRS=" "GLOBCFLAGS=-I/data/test_wifi8_docker/Iplatform/openwrt/staging_dir/target-arm-openwrt-linux-uclibc-bn800v1/usr/include" make[4]: Entering directory '/data/test_wifi8_docker/Iplatform/openwrt/build_dir/target-arm-openwrt-linux-uclibc-bn800v1/bluetopia-profiles-4.2' Makefile:46: *** recipe commences before first target. Stop. make[4]: Leaving directory '/data/test_wifi8_docker/Iplatform/openwrt/build_dir/target-arm-openwrt-linux-uclibc-bn800v1/bluetopia-profiles-4.2' make[3]: *** [Makefile:97: /data/test_wifi8_docker/Iplatform/openwrt/build_dir/target-arm-openwrt-linux-uclibc-bn800v1/bluetopia-profiles-4.2/.built] Error 2 make[3]: Leaving directory '/data/test_wifi8_docker/Iplatform/packages/private/bluetopia-profiles' make[2]: *** [package/Makefile:134: package/feeds/iplatform/bluetopia-profiles/compile] Error 2 make[2]: Leaving directory '/data/test_wifi8_docker/Iplatform/openwrt' make[1]: *** [/data/test_wifi8_docker/Iplatform/openwrt/include/toplevel.mk:186: package/bluetopia-profiles/compile] Error 2 make[1]: Leaving directory '/data/test_wifi8_docker/Iplatform/openwrt' make: *** [Makefile:237: iplatform_package/bluetopia-profiles/compile] Error 2
最新发布
11-20
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BaiRong-NUC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值