makefile的写法

转载 2009年02月04日 14:17:00

makefile是一种描述依赖关系的文件, 它主要描述的是整个工程编译规则, 同时也给工程的维护提供很大的方便. 这在大型工程中非常实用. 在写好makefile之后, 只需要在命令行输入make命令, 工程就按照既定的makefile规则进行"自动化编译".

1. 编译(compile)和链接(link):

我们通常所说的编译一般来说指的是编译和链接这两个过程的总称.

不管是什么类型的源文件(.c .cpp .pas .i...), 都需要先通过编译器中的编译单元生成目标文件(Object File), 它在Windows下是.obj文件, 在Linux下是.o文件, 这个过程叫作编译.

然后编译器的链接单元把这些生成的目标文件合成为可执行文件, 这时链接单元只使用这些目标文件, 并不关心源代码, 这个过程叫作链接.

在很多时候, 由于源文件的数目过于庞大, 编译后生成的目标文件数目也就很多, 在链接过程中由于需要指出所有目标文件, 这就显得很不方便, 于是我们可以把多个目标文件打个包.

在Windows下管这种文件叫库文件(Library File), 扩展名为.lib;

在Linux下这种文件叫Archive File, 扩展名为.a.

可见.lib和.a都是编译的产物而非链接的产物.

2. makefile:

我们首先看一个简单的makefile:

这里需要说明几个概念: 变量, 目标, 依赖.

变量: CC = g++, 这个CC就是一个在makefile里定义的变量, 在定义后可以使用, 使用时是$(CC).

目标和依赖: main.o: main.cpp base.h derive.h, 这个":"(冒号)分开的两边中, 左边就是目标, 右边就是该目标的依赖, 而下一行的命令就是对应于这一对目标/依赖关系的. 当需要实现这个目标时, 如果依赖中有更新, 就需要执行下面的命令.

比如, 当我们执行:

就会执行对应目标"clean"下的命令, 因为clean是没有依赖的, 所以这个命令总被执行.

3. 隐含变量:

在这个makefile文件中, 可以看到诸如$^ $< $@这样的东西, 这被我称为makefile的隐含变量.

$^: 指的是当前依赖中的所有对象.

$<: 指的是当前依赖中的第一个对象.

$@: 指的是当前目标.

makefile常用写法和简易写法

先说长用到的-l: 小写的l就是依赖的lib库,lib首字母,很好记。 -L: 引用的三方lib库所在目录,lib首字母大写就是目录,也好记。 -I: 少不了头文件目录,还是老路子,include...
  • persitail
  • persitail
  • 2016-09-20 12:36:29
  • 852

makefile通用写法

一.makefile的作用           Makefile是用于自动编译和链接的,一个工程有很多文件组成,每一个文件的改变都会导致工程的重新链接,但是不是所有的文件都需要重新编...
  • u013216061
  • u013216061
  • 2017-06-10 10:43:13
  • 375

常见的makefile写法

1、目标名称,摆脱手动设置目标名称 [cpp] view plain copy TARGET = $(notdir $(CURDIR))  all:$(TARGET)  ...
  • bingqingsuimeng
  • bingqingsuimeng
  • 2017-03-06 14:47:47
  • 520

makefile简易正确写法

为了使用g++编译jni,我上网查找资料,也下载了makefiel的教程。网上的资料大多乱七八糟,没法看。教程里面是一个片段一个片段的介绍的,根本不知道哪一个在上,哪一个在下。后经3个小时的不断尝试,...
  • rediculous
  • rediculous
  • 2015-12-08 08:23:57
  • 1377

Makefile写法及自动化工具

  • 2011年09月19日 20:30
  • 427KB
  • 下载

makefile书写入门

首先声明,本篇文章是根据陈皓博客中的相关文章改写的。原因是那篇文章太全面了,而本文抽取了其中比较实用的几点,以一个使用者的角度来说明一下,makefile改怎么写,而且只限定是linux下的C语言的m...
  • cyfcsd
  • cyfcsd
  • 2016-07-29 16:54:06
  • 2949

“万能makefile”写法详解,一步一步写一个实用的Makefile

本文转载自: 作者:胡彦 2013-5-21 出处:http://blog.csdn.net/huyansoft/article/details/8924624提示:本文在原博文的基础上做了一点...
  • QQ1452008
  • QQ1452008
  • 2016-03-12 14:53:08
  • 2365

UNIX下makefile写法

  • 2008年04月27日 10:39
  • 57KB
  • 下载

makefile写法整理

1  Makefile基本语法 Makefile:程序模块的内部关系决定了源程序编译和链接的顺序,通过建立makefile可以描述模块间的相互依赖关系。Make命令从中读取这些信息,然后根据这些信息...
  • crazybc
  • crazybc
  • 2012-07-02 21:44:44
  • 2111

Makefile经典教程.doc

  • 2013年07月08日 09:45
  • 232KB
  • 下载
收藏助手
不良信息举报
您举报文章: makefile的写法
举报原因:
原因补充:

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