Makefile 简介

2009-05-13 00:38:21来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折


一篇讨论为什么写,以及如何写Makefile的文章。
觉得不错,转过来的。
过两天有时间想翻译一下make的Freebsd下的Manpage,看起来有点多,不过就当作这一篇的补充和资料吧。
HTH~
/***********************************************
/*简介makefile
/*
/*作者:不详
/*
/*转自:CU
/*
/*2004-8-10
/***********************************************

0) 介绍
本文将首先介绍为什么要将你的C源代码分离成几个合理的独立档案,什么时候需要分,怎么才能分的好。然
后将会告诉你 GNU Make 怎样使你的编译和连接步骤自动化。 对于其它 Make 工具的用户来说,虽然在用其它
类似工具时要做适当的调整,本文的内 容仍然是非常有用的。如果对你自己的编程工具有怀疑,可以实际的试
一试,但请先阅 读用户手册。
1) 多文件项目
1.1为什么使用它们?
首先,多文件项目的好处在那里呢?
它们看起来把事情弄的复杂无比。又要 header 文件,又要 extern 声明,而且如果需要查找一个文件,你要
在更多的文件里搜索。 但其实我们有很有力的理由支持我们把一个项目分解成小块。当你改动一行代码,编译
器需要全部重新编译来生成一个新的可执行文件。但如果你的项目是分开在几个小文件里,当你改动其中一个
文件的时候,别的源文件的目标文件(object files)已经存在,所以没有什么原因去重新编译它们。你所需要
做的只是重现编译被改动过的那个文件,然后重新连接所有的目标文件罢了。在大型的项目中,这意味着从很
长的(几分钟到几小时)重新编译缩短为十几,二十几秒的简单调整。只要通过基本的规划,将一个项目分解
成多个小文件可使你更加容易的找到一段代码。 很简单,你根据代码的作用把你的代码分解到不同的文件里。
当你要看一段代码时,你可以准确的知道在那个文件中去寻找它。 从很多目标文件生成一个程序包 (Library)
比从一个单一的大目标文件生成要好的多。 当然实际上这是否真是一个优势则是由你所用的系统来决定的。但
是当使用 gcc/ld (一个 GNU C 编译/连接器) 把一个程序包连接到一个程序时,在连接的过程中,它会 尝试
不去连接没有使用到的部分。但它每次只能从程序包中把一个完整的目标文件排除
在外。因此如果你参考一个程序包中某一个目标档中任何一个符号的话,那么这个目标 文件整个都会被连接进
来。要是一个程序包被非常充分的分解了的话,那么经连接后, 得到的可执行文件会比从一个大目标文件组成
的程序包连接得到的文件小得多。 又因为你的程序是很模块化的,文件之间的共享部分被减到最少,那就有很
多好处—— 可以很容易的追踪到臭虫,这些模块经常是可以用在其它的项目里的,同时别人也可以 更容易的
理解你的一段代码是干 什么的。当然此外还有许多别的好处……  
1.2 何时分解你的项目
很明显,把任何东西都分解是不合理的。象“世界,你们好”这样的简单程序根本就不能分,因为实在也没什
么可分的。把用于测试用的小程序分解也是没什么意思的。但一 般来说,当分解项目有助于布局、发展和易读
性的时候,我都会采取它。在大多数的情 况下,这都是适用的。(所谓“世界,你们好”,既 'hello world'
,只是一个介绍 一种编程语言时惯用的范例程序,它会在屏幕上显示一行 'hello world' 。是最简单 的程序
。)如果你需要开发一个相当大的项目,在开始前,应该考虑一下你将如何实现它,并且生 成几个文件(用适
当的名字)来放你的代码。当然,在你的项目开发的过程中,你可以 建立新的文件,但如果你这么做的话,说

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Namp-Manpage2

下一篇:最佳的75个安全工具