首页 > 其他分享 >makefile的常用函数及特殊字符

makefile的常用函数及特殊字符

时间:2023-01-04 10:57:16浏览次数:47  
标签:文件 OBJS bar 函数 SRC makefile foo 特殊字符

makfile的常用函数
下面的常用函数掌握以下,也不用记得住,用时候过来取就行,基本就没问题了

$(wildcard *.c) #同一类型的文件 *.h *.cpp等
$(wildcard $(SRC)/*.c) #同一类型的文件 *.h *.cpp等

$(patsubst *.c, *.o, $(SRC)) #SRC 变量中的所有.c替换为.o
$(patsubst %, -I %, $(INC))  #INC 变量中的所有值前加I

$(foreach dir, $(SRC), $(wildcard $(dir)/*.c)) #提取SRC目录(包含子目录)下的所有c文件

$(notdir $(CFILES)) #去掉CFILES变量的目录信息 /test/hello.c  => hello.c

OBJS := $(addprefix $(OBJ_DIR)/,$(OBJS)) #给 OBJS 加路径前缀,使其变成完整路径的形式

OBJS = $(SRCS:.c=.o) #根据.c推导出.o

OBJS = $(filter %.o %.c, $(OBJS))     # 返回OBJS中的.o和.c文件 ,过滤函数: $(filter <pattern...>,<text>),保留符合模式 <pattern> 的字符串

makefile的常用特殊字符

$< #第一个依赖文件

$^ #所有依赖文件

$@ #目标文件

$? #代表当前目标所依赖的文件列表中比当前目标文件还要新的文件

makfile的“等号区别”

=  #是最基本的赋值
:= #是覆盖之前的值
?= #是如果没有被赋值过就赋予等号后面的值
+= #是添加等号后面的值

#make会将整个makefile展开后,再决定变量的值。也就是说,变量的值将会是整个makefile中最后被指定的值。看例子:

x = foo
y = $(x) bar
x = xyz

#在上例中,y的值将会是 xyz bar ,而不是 foo bar 

x := foo
y := $(x) bar
x := xyz

#y的值将会是 foo bar ,而不是 xyz bar 了

标签:文件,OBJS,bar,函数,SRC,makefile,foo,特殊字符
From: https://www.cnblogs.com/tccxy/p/17024125.html

相关文章

  • SQL:DATEDIFF和DATEADD函数
    DATEDIFF和DATEADD函数。DATEDIFF函数计算两个日期之间的小时、天、周、月、年等时间间隔总数。DATEADD函数计算一个日期通过给时间间隔加减来获得一个新的日期。要了解更......
  • C++11:移动构造函数
    1.拷贝构造函数中的深拷贝问题在C++98/03标准中,如果想用其它对象初始化一个同类的新对象,只能借助类中的拷贝构造函数。拷贝构造函数的实现原理很简单,就是为新对象复制......
  • 通过二维FFT变换对比加入窗函数之后的图像频谱和相位
    目录一、理论基础1.1二维FFT变换1.2窗函数二、核心程序三、测试结果一、理论基础1.1二维FFT变换以下公式定义m×n矩阵X的离散傅里叶变换 Y:    i......
  • 三角函数恒等变形
    基本性质\[\sin^2\alpha+\cos^2\alpha=1\]\[\tan\alpha=\frac{\sin\alpha}{\cos\alpha}\]和差角公式\[\sin(\alpha\pm\beta)=\sin\alpha\cos\beta\pm\cos\alpha\sin\be......
  • C++:拷贝构造函数
    1.拷贝和拷贝构造函数拷贝和复制是一个意思,对应的英文单词都是copy。对于计算机来说,拷贝是指用一份原有的、已经存在的数据创建出一份新的数据,最终的结果是多了一份相同......
  • dremio 表函数简单说明
    dremio对于表函数的处理实际上还是基于了apcahecalcite,只是对于dremio来说,使用相对不是很多目前dremio比较多的就是外部查询,还有就是关于iceberg的一些支持函数参......
  • mysql函数笔记
    count(*)计数avg()求一列的平均数distinct(q.device_id)对某一列去重,一般与count()连用count(question_id)/count(distinct(q.device_id))if(age>=25,'25岁及以上','25......
  • 【230103-2】函数f(x)对于任何实数a,b均有f(ab)=f(a)+f(b).若f(8)=3,求f(根号2)=?
    ......
  • error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
    情况描述:这个错误在移植其它平台(Linux?)的代码到windows下,并使用较高版本的visualstudio时可能会出现错误原因:各平台下编码格式不同,在跨平台时代码可能需要切换到相......
  • 2.4JS中的函数的使用
    ​  什么是JS的函数:类似于java中的方法,JS中也可以定义一些函数,java中的方法签名包含访问修饰符,返回值类型,方法名,参数列表,异常列表,但是JS中定义函数的语法相对......