makefile文件的组成内容

(一)makefile 文件主要有以下五种组成部分:

1. 显式规则:显示规则说明了生成一个或多个目标文件的方法和步骤。这是在编写makefile 文件时明显指出的,包括要生成的文件、生成文件的依赖文件以及生成的命令等。

2. 隐式规则:由于make 工具有自动推导的功能,所以在编写makefile 文件的时候可以利用该规则,简略地书写makefile 。再由make 工具本身自动推到需要使用的规则。

3 变量的定义:make 工具支持变量的定义,这些变量往往都是字符串,因此makefile 中的变量更像是c 语言中的宏。当makefile 被执行时,其中的变量都会被展开到相应的引用位置上。

4 文件指示:其包括三个部分,一个是在一个makefile 种引用另一个makefile, 就像c 语言中的include 一样。另一个是指根据某些情况指定makefile 中的有效部分,就像c 语言中的预编译#if 一样。还有就是定义一个多行的命令。

5 注释:makefile 中支持行注释。用# 表示注释。

(二)使用基本规则

第一种形式:

targets:prerequisites

(tab )command

第二种形式:

targets:prerequisitescommand

(tab )command

其中targets 表示目标,目标有2 种,第一种在执行过程中产生的文件名,例如.o 文件或者可执行文件。第二种是某个动作的名称,在执行过程中没有实际的文件与之对应。这种情况成为PHONY 目标,该目标和C 语言中的标号很像,只执行命令并不产生文件。

Command 表示命令。

例如:

edit: main.o common.o   

    gcc –o edit main.o common.o

main.o: main.c main.h

    gcc –c main.c

common.o: common.c common.h

    gcc –c common.c

clean:

    rm edit main.o common.o

 

 

Makefile是一个自动化编译的工具,它通过一个名为make的程序来使用,通常在Unix-like操作系统中使用,也可以在Windows上使用。Makefile定义了一系列的规则来说明如何编译和链接程序。在Makefile文件中,可以指定需要编译的源文件和编译后生成的目标文件,并且可以设置编译过程中的依赖关系。当一个或多个源文件被修改时,make命令可以自动决定需要重新编译的程序部分,这样可以节省大量重新编译整个程序的时间。 Makefile主要由三个部分组成:规则(Rules)、变量定义(Variable Definitions)、指令(Directives)。规则部分描述了如何构建目标文件以及它们之间的依赖关系;变量定义用于存储文件路径、编译选项等信息,以简化Makefile的编写;指令则是make执行的命令,如条件判断和循环等。 一个简单的Makefile的例子如下: ```makefile # 定义编译器 CC=gcc # 定义编译选项 CFLAGS=-Wall -g # 定义目标文件 TARGET=hello # 定义依赖关系 hello.o: hello.c $(CC) -c $(CFLAGS) hello.c # 定义最终目标 hello: hello.o $(CC) -o $(TARGET) hello.o # 清理编译生成的文件 clean: rm -f $(TARGET) *.o ``` 在这个Makefile中,定义了一个名为`hello`的目标,它依赖于`hello.o`。当执行`make hello`命令时,会首先检查`hello.o`是否比`hello.c`新,如果是,则编译生成`hello.o`,然后链接生成最终的可执行文件`hello`。执行`make clean`则会删除所有编译生成的文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值