makefile脚本

1.makefile进行工程管理

先创建一个名称为makefile或者Makefile的文档。
make的最终目标是makefile中的第一个目标,
而其它目标一般是由这个目标连带出来的。
这是make的默认行为。
当然,一般来说,你的makefile中的第一个目标是由许多个目标组成,你可以指示make,让其完成你所指定的目标。
要达到这一目的很简单,需在make命令后直接跟目标的名字就可以完成(如“make clean”)

2.文档里面输入的内容

输入相应内容的时候,要遵循相应的规则
规则:用于说明如何生成一个或多个文件;

规则格式:
target:dependency_files //目标项:依赖项
<TAB>command //command必须以【tab】键开头

规则就是为了生成某个文件。
目标项:这个就是你要生成的文件名;
依赖项:要生成目标项需要的文件;
编译命令:如果有依赖项生成目标项;必须以【tab】键开头;
反斜杠:\可以换行,便于makefile的易读
在这里插入图片描述
在这个 makefile 中,目标文件(target)包含:执行文件 test和中间目标文件(*.o),依赖文件(prerequisites)就是冒号后面的那些 .c 文件。每一个 .o 文件都有一组依赖文件,而这些 .o 文件又是执行文件 test 的依赖文件。
依赖关系的实质上就是说明了目标文件是由哪些文件生成的,换言之,目标文件是哪些文件更新的。

3.如何运行这个makefile文件

在该目录下直接输入make就可以生成执行文件test
在这里插入图片描述
在这里插入图片描述
总结:
1.目标文件不存在,执行命令
2.文件已经更新,执行命令
3.Makefile的第一条规则为最终的目标
使用指定终极目标的方法可以方便编译程序:

.PHONY: all
all: proc1 proc2 proc3
pro1: ...
proc2: ...
proc3: ...

可以使用 “make all” 来编译所有目标,如果将all作为第一目标,只需执行“make”, 也可以单独编译目标proc1,使用“make proc1”

2.在验证仿真中,最长使用的则是伪目标,下面介绍伪目标

# .PHONY 是Makefile文件的关键字,表示它后面列表中的目标均为伪目标
.PHONY:clean
clean:
	rm -rf hello main.c func1.o func2.o
#伪命令的使用:
[root@makefile] make clean

3.makefile 的变量

变量类似C语言里面的宏定义
变量分为:用户自定义变量,自动变量,预定义变量,环境变量
1.自定义变量:

1.定义变量格式:
	变量名 = 变量值 #最基本的赋值方式
	变量名 := 变量值 #覆盖之前的值,与=相似,效果更好,常用
	变量名 ?= 变量值 #若没有则赋值,有则保留原来的(不执行当前赋值)
	变量名 += 变量值 #在原来的基础添加
2.如何引用变量:
	$(变量名)=?? //给变量赋值
	??=$(变量名) //引用变量
.PHONY:com sim clean

OUTPUT = adder_top

VCS = vcs -sverilog +v2k -timescale=1ns/1ns                             \
	  -debug_all							\
	  -o ${OUTPUT}							\
	  -l compile.log						\

SIM = ./${OUTPUT} -l run.log

com:
	${VCS} -f verilog_file.f

sim:
	${SIM}

clean:
	rm -rf ./csrc *.daidir *.log simv* *.key

2.自动变量
在这里插入图片描述

4.其他

1.把生成的目标存放到其他的文件夹里面

DIR := ./debug/
$(DIR)test:$(DIR)test.o $(DIR)sequence.o
	gcc -o $(DIR)test.o $(DIR)sequence.o

2.makfile里面的注释使用#
3.命令如果不想显示到终端,在命令前加@
4.如果你命名的makefile文档名并非makefile,那么就要加上**-f**

[root@makefile]# make -f Makefile1

参考:
https://www.bilibili.com/video/BV1dW411n7vk?spm_id_from=333.999.0.0

跟我一起写Makefile——陈皓

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值