Makefile⚠️ 注意在Makefile的规则中命令必须以Tab开头不能是空格。makefile的语句分为四类终端命令变量赋值判断条件依赖关系其他终端命令clean: rm -rf obj_dir rm -f wave.fst调用时用make clean即调用上面两条指令伪目标.PHONY: clean clean: rm -rf obj_dir rm -f wave.fst可用.PHONY: clean将clean定义为伪目标,make则不会把clean视为文件多条指令cd: pwd; cd ..; pwd;makefile中有改变文件的指令需要加;隔开写到一行,否则执行cd ..所在文件夹不会改变,cd: pwd; \ cd ..; \ pwd用\分成多行,更好看一点cd: cd .. pwd的作用是当某条指令失败时,后续指令不会执行控制打印加入执行make output时不会打印echo not displayoutput: echo not display echo will display加上-会忽略该指令的错误ignore_error: -rm zzz.txt echo ok变量赋值makefile可以给变量赋值,再通过$()调用VFLAGS --cc --exe --build -j 0 -Wall --trace --trace-fst SOURCES sim_t1.cpp t1.v sim: verilator $(VFLAGS) $(SOURCES)$()还有调用函数的用法$(call git_commit, sim RTL)可调用include用其他makefile的指令判断条件ifeq ($(DEBUG), 1) VFLAGS --cc --exe --build -j 0 -Wall --trace --trace-fst -g MSG 调试模式生成波形 else VFLAGS --cc --exe --build -j 0 -Wall -O2 MSG 发布模式不生成波形 endifDEBUG 1时,进行调试run: if [ -f ./obj_dir/Vt1 ]; then \ echo 找到可执行文件开始运行...; \ ./obj_dir/Vt1; \ else \ echo 错误请先执行 make sim 编译; \ exit 1; \ fi检测文件是否存在依赖关系固定格式为目标文件: 依赖文件1 依赖文件2 ...x.txt: m.txt c.txt cat m.txt c.txt x.txt其他make默认从第一条指令往下执行