Makefile是什么东东?有什么用?怎么用?

makefile是用于自动编译和链接的,一个工程有很多文件组成,每一个文件的改变都会导致工程的重新链接-----但是不是所有的文件都需要重新编译,makefile能够纪录文件的信息,决定在链接的时候需要重新编译哪些文件!

在unix系统下,makefile是与make命令配合使用的。
---------------------------------------------------------------

看看Unix编程就会了解一些。VC会自动生成这些东西。
---------------------------------------------------------------

现在Makefile文件好像用得越来越少了,深入浅出MFC写了。
---------------------------------------------------------------

举个例子吧,我现在有main.c 、window.c 、model.c 、data.c 4个.c文件和window.h 、model.h 、data.h 3个.h文件。
main.c是主程序,里面有main()函数。其他的都是模块。

如果要生成最终的可执行文件,要做以下步骤:
1、分别编译window.c 、model.c 、data.c 、main.c ,将会得到3个目标文件:window.o 、model.o 、data.o 、main.o
2、把这4个.o (在windows下就是.obj)文件链接起来,得到main.out(在windows下就是main.exe)。

那么这些文件就要有逻辑关系,否则编译器不知道怎么编译。

all:main.out
main.out:main.o window.o model.o data.o
    gcc -o main.out main.o window.o model.o data.o

#上面的意思是说:
#all:main.out
如果想要编译所有:make all,那么将会生成main.out可执行文件。

#main.out:main.o window.o model.o data.o
而要生成这个main.out,需要依赖main.o,window.o,model.o,data.o 4个文件。

#    gcc -o main.out main.o window.o model.o data.o
这句是调用编译器编译,vc用的是cl。变异的时候可以加上很多的参数、定义的宏、链接库路径等。

当然,还没有完呢,这些main.out依赖的这些 .o 怎么来的?

window.o:window.c window.h
    gcc -c window.c

model.o:model.c model.h
    gcc -c model.c

data.o:data.c data.h
    gcc -c data.c

上面的-c参数是指定编译器编译出一个.o文件就可以了,不要再寻找main()函数做链接工作。

这些和到一起,就是一个makefile,当然这些功能还太少,可以加上很多别的项目。但宗旨就是:让编译器知道要编译一个文件需要依赖其他的哪些文件。当那些依赖文件有了改变,编译器会自动的发现最终的生成文件已经过时,而重新编译相应的模块。
  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值