makefile的含义与用途

转载 2004年07月21日 14:30:00
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,当然这些功能还太少,可以加上很多别的项目。但宗旨就是:让编译器知道要编译一个文件需要依赖其他的哪些文件。当那些依赖文件有了改变,编译器会自动的发现最终的生成文件已经过时,而重新编译相应的模块。  
 
现在的VC++真是太好了,不用一个字一个字的去敲Makefile  了。  ^_^

makefile 中$^、$@、$<分别代表什么意思?

分别代表所有依赖、目标文件、第一个依赖。
  • u013176681
  • u013176681
  • 2015-11-10 11:04:39
  • 3147

MAKEFILE--通配符

如果我们想定义一系列比较类似的文件,我们很自然地就想起使用通配符。make支持三个通配符:“*”,“?”和“~”。这是和Unix的B-Shell是相同的。 波浪号(“~”)字符在文件名中也有比较特...
  • printf_mylife
  • printf_mylife
  • 2014-03-24 11:26:08
  • 827

Makefile文件综述

  • 2011年05月11日 13:29
  • 411KB
  • 下载

Makefile 使用总结(个人觉得不错)

原文链接:http://www.cnblogs.com/wang_yb/p/3990952.html 1. Makefile 简介 Makefile 是和 make 命令一起配合使用的. 很多大...
  • Decisiveness
  • Decisiveness
  • 2016-03-23 16:09:45
  • 517

makefile之变量

一、makefile中的变量定义
  • astrotycoon
  • astrotycoon
  • 2015-12-25 11:07:47
  • 729

Synchronized含义

Synchronized 锁定的是对象而非函数或代码。每个Object都有一把锁(Lock),当进行到Synchronized语句或函数的时候,这把锁就会被当前的线程(thread)拿走,其他的(th...
  • dengyin2000
  • dengyin2000
  • 2005-06-08 11:11:00
  • 1636

makefile中 phony的用途

1.~~~~~~~~~~~~~~~~~~~~~~~~~~~ .PHONY: clean: @rm -f *.o ftserve @rm -f ../common/*.o @echo Done clea...
  • dfadsg
  • dfadsg
  • 2016-10-27 09:55:06
  • 1655

[笔记] EXCEL中的数据透视表含义、用途、何时使用

1. 数据透视含义 数据透视表是用来从excel数据列表、关系数据库文件或者OLAP多维数据集等数据源的特定字段中总结信息的分析工具它是一种交互式报表,可以快速分类汇总比较大量的数据,并可以随时选择其...
  • zd8582zd
  • zd8582zd
  • 2015-04-26 08:51:13
  • 1017

makefile笔记

  • 2008年12月12日 09:11
  • 168KB
  • 下载

makefile常用参数

CFLAGS = -Wall -O -g -Wall 是打开警告开关,-O代表默认优化,可选:-O0不优化,-O1低级优化,-O2中级优化,-O3高级优化,-Os代码空间优化。 -g是生成调试信息,...
  • haifengid
  • haifengid
  • 2016-06-21 16:43:48
  • 374
收藏助手
不良信息举报
您举报文章:makefile的含义与用途
举报原因:
原因补充:

(最多只允许输入30个字)