makefile中的零星知识点

本文深入讲解Makefile的使用技巧,包括make命令的高级用法、变量的导出、使用shell命令、放置首个目标的策略及假想目标的概念,助力开发者高效编译。

1 make命令的使用

执行make命令时,它会去当前目录下查找名为“Makefile”的文件,并根据它的指示去执行操作,生成第一个目标。
我们可以使用“-f”选项指定文件,不再使用名为“Makefile”的文件,比如:

make  -f  Makefile.build 

我们可以使用“-C”选项指定目录,切换到其他目录里去,比如:

make -C  a/  -f  Makefile.build

我们可以指定目标,不再默认生成第一个目标:

make -C  a/  -f  Makefile.build   other_target

2 变量的导出(export)

在编译程序时,我们会不断地使用“make -C dir”切换到其他目录,执行其他目录里的Makefile。如果想让某个变量的值在所有目录中都可见,要把它export出来。
比如“CC = $(CROSS_COMPILE)gcc”,这个CC变量表示编译器,在整个过程中都是一样的。定义它之后,要使用“export CC”把它导出来。


3 Makefile中可以使用shell命令

比如:

TOPDIR := $(shell pwd)

这是个立即变量,TOPDIR等于shell命令pwd的结果。


4 在Makefile中怎么放置第1个目标

执行make命令时如果不指定目标,那么它默认是去生成第1个目标。
所以“第1个目标”,位置很重要。有时候不太方便把第1个目标完整地放在文件前面,这时可以在文件的前面直接放置目标,在后面再完善它的依赖与命令。比如:

First_target:   // 这句话放在前面
....        // 其他代码,比如include其他文件得到后面的xxx变量
First_target : $(xxx)   $(yyy)   // 在文件的后面再来完善
	command

5 假想目标

我们的Makefile中有这样的目标:

clean:
	rm -f $(shell find -name "*.o")
	rm -f $(TARGET)

如果当前目录下恰好有名为“clean”的文件,那么执行“make clean”时它就不会执行那些删除命令。
这时我们需要把“clean”这个目标,设置为“假想目标”,这样可以确保执行“make clean”时那些删除命令肯定可以得到执行。
使用下面的语句把“clean”设置为假想目标:

.PHONY : clean

参考资料:

  1. 韦东山全系列视频第1季快速入门
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值