Makefile的使用

| 在这里插入代码片| |
|–|--|工程目录的搭建
pro_name----------------------------------bin
|
|-------------------------obj
|
|-------------------------include
|
|-------------------------src

	bin:这个文件夹来存放编译生成的文件(可执行文件/动态库)
	obj:编译出的目标文件
	include:工程中需要的头文件
	src:工程中的.c源文件

当工程较大时,编译对于开发来说已经相当浪费时间了,此时,有专门工程管理工具来使用。
GNU make
cmake

工作时:cmake
原始的工具:make (GNU提供一个工程管理工具)
	makefile

	make是按照makefile编写的规则来进行编译的。

makefile的编写:
	如果你执行make,make会自动寻找工程目录下,名字如下的文件:
		GNUmakefile	(不常用)
		makefile
		Makefile

makefile的编写规则:
	Makefile基本框架
		Makefile的构成:	target(由make工具创建的目标体,通常是目标文件或可执行文件)
						prerequisites(先决条件,前提:这个前提是一个作为gcc source的文件,一个target通常需要好几个文件)
						recipe(处方:是一个make执行的动作。一个recipe可能有多个命令,无论是在同一行或每一个自己的行。
		请注意:你需要放一个标签字符在每一recipeline的开始!这个可以避免一些粗心造成的错误。如果你更为喜欢你的recipe的前缀字符,你可以设置.recipeprefix变量到另一个字符)

	简单的Makefile格式:
		target ... : prerequisites ...
		<TAB>recipe
		<TAB>...
		<TAB>...

变量:
	自定义变量:
		iopt = WOMAN
		TY : tjpy.c
			gcc $^ -D ${iopt} -o $@

	注意在使用时,如果变量名和关键字有冲突	${变量名}:取到变量的值

make和shell是不同两个软件,两个软件的脚本编写规则是有些差异的,不要记混了。


常见的自动变量:
$*:不包含扩展名的目标文件
$+:所有的依赖文件,以空格分开,并以出现的先后为序
$<:第一个依赖文件的名称
$?:所有时间戳比目标文件晚的依赖文件,并以空格分开
$@:目标文件的完整名称								******(匹配的是当前的目标)
$^:所有不重复的目标依赖文件,以空格隔开				******
$%:如果目标是归档成员,则该变量表示目标的归档成员名称


例子:
iopt = WOMAN
TY : tjpy.c
        gcc $^ -D ${iopt} -o $@
        #gcc tjpy.c -D MAN -o TY
        #echo $@
        #echo $^
.PHONY : clean
clean:
        rm TY

注意:
1.通过".PHONY"特殊目标将"clean"目标声明为伪目标。避免当前目录上存在一个名为"clean"文件时,
  目标"clean"所在规则的命令无法执行。

make -C dirname:进入dirname这个文件夹执行make

| | |

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值