如何编写Makefile(1)-概述

目录

一、概述

二、规则

2.1 简单示例

2.2 工作机理

2.3 使用变量

2.4 自动推导

2.5 另类风格

2.6 清理

2.7 包含内容

2.8 文件名

2.9 引用其它的Makefile

2.10 工作方式


一、概述

        对于使用Windows操作系统的程序员,Makefile可能显得有些陌生,因为Windows的集成开发环境(IDE)已经隐式的完成了代码的编译过程。但对于使用Linux系统进行开发的程序员,需要手动完成代码编译,如果掌握Makefile编写,将大幅提高编译效率。

        简单来说,Makefile是用来定义程序编译规则的,一个项目工程中的源文件数量庞大,并且按照功能、类型、模块分别存放在不同的目录中。Makefile中的内容就是用于指定哪些文件先编译,哪些后编译,哪些需要重新编译,以及可以通过Makefile实现一些复杂功能,譬如执行操作系统指令。Makefile最大的特点就是可以通过make命令一键实现自动化编译,make命令是用于解释Makefile中指令的命令工具,一般IDE都有这个命令,如Visual C++的nmake、Linux的GNU make、Delphi的make等。

        程序的编译就是先将源文件(如.c、.cpp)转换成中间代码文件,Windows中为.obj文件,UNIX中为.o文件,即Object File目标文件,称为编译(Compile)。然后通过链接器将Object File文件合成可执行程序,称为链接(link)。

        编译时,编译器需要检查语法是否正确,函数和变量声明是否正确,这里需要告诉编译器头文件所在位置;链接时主要将中间目标文件合成可执行程序,有时由于源文件太多,编译生成的中间目标文件太多,在链接时又需要明确地指出中间目标文件名,很不方便,所以通常给中间目标文件打包,在Windows中称为“库文件(Library File)”即.lib文件,在UNIX中是Archive File,即.a文件。

二、规则

        Makefile是指导make命令执行编译和链接动作的文件,编写的基本规则是:

1、如果这个工程未编译过,那么所有.c文件都需要编译并被链接;

2、如果这个工程的某些.c文件被修改,那么只编译被修改的.c文件,并且链接目标文件;

3、如果这个工程的头文件被修改,那么需要编译引用这些头文件的.c文件,并且链接目标文件。

        大概的规则结构如下:

target ... : prerequistes ...
    command
    ...
    ...

target

        可以是一个目标文件(Object File),也可以是可执行文件,或者是一个标签(label)。

prerequisties

        生成此目标(target)的依赖文件和/或target

command

        target要执行的命令

        Makefile的核心内容是:prerequisities中如果有一个以上的文件比target文件要新的话,command所定义的命令就会被执行。

2.1 简单示例

        如果一个工程有3个头文件、8个.c文件,为实现make自动编

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿核试Bug愁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值