基本语法:
1)指定使用的makefile:-f
参考:make指定makefile文件编译_make 指定makefile-CSDN博客
一般来说如果文件夹只有一个makefile文件,直接执行make
命令即可。
当有多个makefile文件时,就需要指定文件名。
更多参数参考:(18)Make命令参数和选项大汇总 - Mr_chuan - 博客园
2)debug 打印信息:$(info $var)
3) include 其他makefile: include /path/makefile
4) 条件语法:浅显易懂 Makefile 入门 (04)— 条件判断 (ifeq、ifneq、ifdef 和 ifndef)、定义命令包 define 和伪目标-CSDN博客
first = $(CXX)
second = g++
all:
ifeq ($(first), $(second))
echo `first == second`
else
echo `first != second`
endif
踩过的坑:
1)makefile里面定义来一个宏参数,带有一定值,但是在命令行里面再去给这个宏赋值,发现会把原来makefile里面的值给覆盖;预期效果是不覆盖原来的,只是在原来的基础上去增补;
请参考:Makefile中override 指示符_override variable = value-CSDN博客
通常在执行make时,如果通过命令行定义了一个变量,那么它将替代在Makefile中出现的同名变量的定义。就是说,对于一个在Makefile中使用常规方式(使用“=”、“:=”或者“define”)定义的变量,我们可以在执行make时通过命令行方式重新指定这个变量的值,命令行指定的值将替代出现在Makefile中此变量的值。如果不希望命令行指定的变量值替代在Makefile中的变量定义,那么我们需要在Makefile中使用指示符“override”来对这个变量进行声明
2) wildcard:
如果initreg对应文件存在则执行;
如果利用initreg_debug需要设置上面这个环境变量
Makefile中wildcard的介绍 - haoxing990 - 博客园
initreg的用法:vcs_user guide
random模式会随机0-1数值,不会随机到X/Z;
可以只针对mem或reg进行initreg: