[应用相关] Makefile 管理工程

[复制链接]
935|16
 楼主| gaoke231 发表于 2019-3-14 23:12 | 显示全部楼层 |阅读模式
GNU的make能够使整个软件工程的编译、链接只需要一个命令就可以完成。Make在执行时,需要一个命名为Makefile的文件。Makefile文件描述了整个工程的编译,连接等规则。其中包括:工程哪些源文件需要编译以及如何编译;需要创建哪些库文件以及如何创建这些库文件;如何最后产生我们想要的可执行文件。

 楼主| gaoke231 发表于 2019-3-14 23:12 | 显示全部楼层
Makefile (例)
hello: main.o fun1.o fun2.o
      gcc main.o fun1.o fun2.o -o hello
main.o:main.c
      gcc -c main.c
fun1.o: fun1.c
      gcc -c fun1.c
fun2.o: fun1.c
      gcc -c fun1.c
.PHONY:clean
clean:
rm -f hello main.o fun1.o fun2.o
 楼主| gaoke231 发表于 2019-3-14 23:12 | 显示全部楼层
规则:用于说明如何生成一个或多个目标文件,规则格式如下:
targets:prerequisites  command  
目标:    依赖           命令
main.o:main.c
   gcc -c main.c
 楼主| gaoke231 发表于 2019-3-14 23:13 | 显示全部楼层
Makefile 文件名
make命令默认在当前目录下寻找名字为makefile或者Makefile的工程文件,当名字不为这两者之一时,可以使用如下方法指定:make -f 文件名
 楼主| gaoke231 发表于 2019-3-14 23:13 | 显示全部楼层
Makefile(伪目标)
Makefile中将那些没有任何依赖只有执行动作的目标称为“伪目标”(phony targets)
.PHONY:clean
clean:
      Rm -f hello main.o fun1.o fun2.o
“.PHONY”将“clean”目标声明为伪目标
 楼主| gaoke231 发表于 2019-3-14 23:13 | 显示全部楼层
Makefile(变量)
Obj=main.o fun1.o fun2.o fun3.o
hello:$(obj)
     gcc$(obj) -o hello
在Makefile中。存在系统变量的变量
$^ :代表所有的依赖文件
$@ :代表目标
$< :代表第一个依赖文件
 楼主| gaoke231 发表于 2019-3-14 23:14 | 显示全部楼层
例: hello:main.o fun1.o fun2.o
         gcc main.o fun1.o fun2.o -o hello
     =>
     hello:main.o fun1.o fun2.o
         gcc $^ -o $@
 楼主| gaoke231 发表于 2019-3-14 23:16 | 显示全部楼层
Makefile中的 “#”字符后的内容被视作注释。
 楼主| gaoke231 发表于 2019-3-14 23:27 | 显示全部楼层
@:取消回显
hello:hello.c
22635c8a72ebba7cc.png
paotangsan 发表于 2019-4-3 12:59 | 显示全部楼层
非常感谢楼主分享
renzheshengui 发表于 2019-4-3 13:00 | 显示全部楼层
长知识了 谢谢楼主
peripheral 发表于 2019-4-3 15:31 | 显示全部楼层
感谢楼主分享!学习了!
wowu 发表于 2019-4-3 17:40 | 显示全部楼层
非常感谢楼主分享
xiaoqizi 发表于 2019-4-3 17:46 | 显示全部楼层
非常感谢楼主分享
 楼主| gaoke231 发表于 2019-4-10 18:37 | 显示全部楼层
paotangsan 发表于 2019-4-3 12:59
非常感谢楼主分享

这个不难,就是拿来给大家看看
 楼主| gaoke231 发表于 2019-4-10 18:37 | 显示全部楼层
renzheshengui 发表于 2019-4-3 13:00
长知识了 谢谢楼主

哈哈,客气了
 楼主| gaoke231 发表于 2019-4-10 18:38 | 显示全部楼层
peripheral 发表于 2019-4-3 15:31
感谢楼主分享!学习了!

应该的,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

54

主题

1310

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部