概述
当工程量少时,可以采用gcc文件单个编译。
像linux kernel代码,1万多个时采用make管理。
linux程序员必须学会使用GNU make来构建和管理自己的软件工程。
make在执行时,需要一个命名为Makefile的文件。makefile文件描述了整个工程的编译、链接等规则。
Makefile例子:
一、Makefile术语:
规则:用于说明如何生成一个或者多个目标文件。
规则格式:
targets:prerequisites command 目标 依赖 命令 main.o:main.c gcc -c main.c 注意:**命令需要以【TAB】键开始**
二、Makefile目标:
Makefile中只应该有一个最终目标。其它目标都是被这个目标所连带出来的。
一般定义在Makefile中的目标可能会有很多,但第一条规则中的目标将被确定为最终的目标。
三、Makefile文件名:
make命令默认在当前目录下寻找名字为makefile或者Makefile的工程文件,当名字不为这两者之一时,可以使用以下指定:
make -f 文件名 <----->make
make --file 文件名
四、伪目标:只有动作没有依赖
Makefile中把那些没有任何依赖只有执行动作的目标称为“伪目标”(phony targets).
.PHONY:clean
clean:
rm -f hello main.o func1.o func2.o
说明:".PHONY"将“clean”目标声明为伪目标
五、变量
hello:main.o func1.o func2.o
gcc main.o func1.o func2.o -o hello
如果要为hello目标添加一个依赖:func3.o:有以下两种操作:
1、 hello:main.o func1.o func2.o func3.o gcc mian.o func1.o func2.o func3.o -o hello 2. obj=main.o func1.o func2.o func3.o hello:$(obj) gcc $(obj) -o hello
当命令有很多行时,第二种方法最合适。
在makefile种,存在系统默认的自动化变量
$^:代表所有的依赖文件 $@:代表目标 $<: 代表第一个依赖文件 ex: hello:main.o func1.o func2.0 gcc main.o func1.o func2.o -o hello 等价于 hello:main.o func1.o func2.o gcc $^ -o $@
Makefile中“#”字符后的内容被视作注释。
hello: hello.c
@gcc hello.c -o hello
注意:@取消回显 //不显示命令
转载于:https://www.cnblogs.com/Caden-liu8888/p/7704410.html
最后
以上就是受伤帽子为你收集整理的makefile工程管理的全部内容,希望文章能够帮你解决makefile工程管理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复