makefile文件管理

1、makefile

首先呢make在执行时,需要一个命名为makefile的文件。

makefile文件描述了整个工程的编译,连接等规则。

其中包括:工程的哪些源文件需要编译以及如何编译;

需要哦创建哪些库文件以及如何创建这些库文件,如何最后产生我们想要的可执行文件。

例程:

hello : main.o func1.o func2.o

    gcc main.o func1.o func2.o -o hello

main.o : main.c

    gcc main.c -o main.o

func1.o : func1.c

    gcc func1.c -o func1.o

func2.o : func2.c

    gcc func2.c -o func2.o

.PHONY : clean

clean:

    rm -f hello main.o func1.o func2.o

这个例子连伪目标也说明了,其中伪目标会在后面有介绍~~

2、makefile(术语)

规则:

用于说明如何产生一个或者多个目标文件~~

格式:

targets : prerequisites

    command

targets:目标;

prerequisites:依赖

command:命令(要有空格,就是按下TAB键)

例如:

main.o : main.c

    gcc -c main.c

3、目标

在makefile中,规则的顺序是很重要的~~

因为在一个makefile钟只有一个最终目标,其他的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标是什么~~

一般来说,定义在makefile中的目标可能会有很多,但是:

第一条规则中的目标将被确立为最终目标~~

4、文件名

make命令默认在当前目录下寻找名字为makefile或者Makefile的工程文件,当时当名字不为这两个指定的文件名时,可以用如下方法指定:

make -f 文件名

5、伪目标

makefile中把那些

没有任何依赖(也就是没有prerequisites~~),只有执行动作的目标

成为“伪目标”(phony targets)。

例如:

.PHONY : clean

clean:

    rm -f hello main.o func1.o func2.o

就是删除这些文件,但是这个指令没有依赖哦~~

“.PHONY”将“clean”目标声明为伪目标~~

6、变量

最开始的例子可以这样写:

obj=main.o func1.o func2.o func3.o

hello : $(obj)

    gcc $(obj) -o hello

对于多文件还是很方便的~~

在makefile中,存在系统默认的自动变化量:

▲ $^:代表所有的依赖文件

▲ $@:代表目标

▲ $<:代表第一个依赖文件

上面的还可以改写成这样:

hello : main.o func1.o func2.o

    gcc $^ -o $@

 

7、杂项

makefile中“#”字符后的内容被视作注释。

在gcc前面加上@可以取消显示回显(就是不显示gcc这句话了~~)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值