Makefile工程管理器

概述

Make是一个工具程序,它是一种转换文件形式的工具,主要依赖文件的修改时间进行判断(时间戳),来执行编译已修改的源代码。可以有效提高我们的编译效率。其基本概念有三个:目标(Target)、依赖(Dependency)、规则(Rule)。目标就是我们要生成的文件,依赖就是达成目标所需要的文件,规则就是我们具体要实现的语句。
举个简单的例子:
我们想要一个test的可执行文件,我们的依赖就是test.c文件,规则就是gcc test.c -o test -Wall

Target:Dependency
	Rule
test:test.c
	gcc test.c -o test -Wall

基本规则

基本规则1:基本格式如下:

test:test.c
	gcc test.c -o test -Wall

在这里插入图片描述
基本规则2:Makefile可以定义多个目标。运行时使用命令
make 目标 来实现目标。如果不指定目标,默认第一个目标。
代码如下:
在这里插入图片描述
基本规则3:依赖文件必须先满足或先构建
在这里插入图片描述
基本规则4:一个规则可以有多个目标
在这里插入图片描述
基本规则5:一个目标可以有多个命令
在这里插入图片描述

Make 假目标(处理所定义目标与已存在文件同名的的情况)

使用方法:
在文件开头使用.PHONY:目标
代码如下:

.PHONY:test3
test :test.c
	gcc test.c -o test -Wall
	gcc test1.c -o test1 -Wall
test3:
	rm test test1

在这里插入图片描述

Makefile 变量

作用:方便使用,简洁,更具可维护性
定义:名字 = 值

CC = gcc

变量的引用:$ (变量名) 或 ${变量名} 和shell一样

自动变量

  1. $@用于表示一个规则中的目标。当一个规则中有多个目标时, $@指的是其中任何造成命令被运行的的目标
  2. $^表示规则中的所有依赖条件
  3. $<第一个依赖条件
.PHONY:clean
CC = gcc
RM = rm
OBJ = test
OBJS = main.o foo.o

$(OBJ):$(OBJS)
	$(CC) -o $@ $^
main.o:main.c
	$(CC) -c $^ -o $@
foo.o:foo.c
	$(CC) -c $^ -o $@
clean:
	@$(RM) $(OBJS) $(OBJ)

预定义变量

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 编译器的选项,无默认值

命令格式含义
AR库文件维护程序的名称,默认值为 ar
AS汇编程序的名称,默认值为 as
CCC 编译器的名称,默认值为 cc
CPPC 预编译器的名称,默认值为$(CC) –E
CXXC++编译器的名称,默认值为 g++
FCFORTRAN 编译器的名称,默认值为 f77
RM文件删除程序的名称,默认值为 rm –f
ARFLAGS库文件维护程序的选项,无默认值
ASFLAGS汇编程序的选项,无默认值
CFLAGSC 编译器的选项,无默认值
CPPFLAGSC 预编译的选项,无默认值
CXXFLAGSC++编译器的选项,无默认值
FFLAGSFORTRAN 编译器的选项,无默认值
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值