Makefile基础用法总结(二)

3.makefile运行流程

3.1 make和makefile

makefile文件主要包含了5部分内容:

  • 显式规则
    1. 说明了如何生成一个或多个目标文件。由makefile文件的创作者指出,包括要生成的文件、文件的依赖文件、生成的命令。
  • 隐式规则
    1. 由于make有自动推导的功能,所以隐式规则可以比较粗糙的简略属性makefile文件,这是由make所支持的。
  • 变量定义
    1. 在makefile文件中定义一系列的变量,变量一般都是字符串,这与C语言中的宏定义类似。其中的变量都会扩展到相应的引用位置上。
  • 文件指示
    1. 在一个makefile文件中引用另一个makefile文件
    2. 根据某些情况指定makefile文件中的有效部分
    3. 定义一个多行命令
  • 注释
    1. #

3.2 系统自带变量 —— $@  $^

3.2.1 makefile中常见预定义变量

命令格式

含义

AR

库文件维护程序的名称,默认为ar

AS

汇编程序的名称,默认为as

CC

C编译器的名称,默认为cc

CPP

C预编译器的名称,默认为$(CC)-E

CXX

C++编译器的名称,默认值为g++

FC

FORTRAN编译器名称,默认值为f77

RM

文件删除程序的名称,默认值为rm-f

ARFLAGS

库文件维护程序的选项,无默认值

ASFLAGS

汇编程序的选项,无默认值

CFLAGS

C编译器的选项,无默认值

CPPFLAGS

C预编译器的选项,无默认值

CXXFLAGS

C编译器的选项,无默认值

FFLAGS

FORTRAN编译器的选项,无默认值

$*

不包含扩展名的目标文件名称

$+

所有依赖文件,以出现的先后排序,(可能重复)

$<

第一个依赖文件的名称

$?

所有时间戳比目标文件晚的依赖文件

$@

目标文件的完整名称

$^

所有不重复的依赖文件

$%

若目标是归档成员,该变量表示目标的归档成员名称

3.2.2 引入变量,改写makefile

<first_make.c>

<head.h>

<makefile>

改写后

<makefile>

3.3 make传递变量 —— CC

​​​​​​​3.4 手动定义变量 —— 传递target

<makefile>

​​​​​​​3.5 自动推理参数设置 —— CFLAGS

当 head.h 头文件在其他位置是,需要-I加上头文件的目录,对应变量名称为CFLAGS

<makefile>

​​​​​​​3.6 make clean

伪目标:clean,用.PHONY来标注,这样即使存在文件名为clean,也会执行清理操作。

执行 make 时,为什么 make clean不执行,因为clean没有依赖文件,它本身就是最新的,所以不执行。

<makefile>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值