origin常用函数

abs : 绝对值 
acos : x 的反余弦 
angle(x,y) : 点(0,0)和点(x,y)的连线与 x 轴之间的夹角 
asin : x 的反正弦 
atan : x 的反正切 
J0 : 零次贝塞耳函数 
J1 : 一次贝塞耳函数 
Jn(x,n) : n 次贝塞耳函数 
beta(z,w): z > 0, w > 0 β函数 
cos: x的余弦 
cosh : 双曲余弦 
erf : 正规误差积分 
exp : 指数 
ftable(x,m,n) : 自由度为 m,n 的 F 分布 
gammaln : γ 函数的自然对数 
incbeta(x,a,b) : 不完全的β函数 
incf(x,m,n): m,n自由度上限为 x 的不完全 F 分布 
incgamma(x,a) : 不完全 γ 函数 
int : 被截的整数 
inverf : 反误差函数 
invf(x,m,n) : m 和 n自由度的反 F 分布 
invprob : 正态分布的反概率密度函数 
invt(x,n) : 自由度 n 的反 t 分布 
ln : x 的自然对数 
log : 10为底的 x 对数 
mod(x,y) : 当整数 x 被整数 y 除时余数 
nint : 到 x 最近的整数 
prec(x,p) : x 到 p 的显著性 
prob : 正态分布的概率密度 
qcd2 : 质量控制 D2 因子 
qcd3 : 质量控制 D3 因子 
qcd4 : 质量控制 D4 因子 
rmod(x,y) : 实数x除以实数y的余数 
round(x,p) : x 环绕 p 的准确度 
sin : x 的正弦 
sinh : x 的双曲正弦 
sqrt : x 的平方根 
tan : x 的正切 
tanh : x 的双曲正切 
ttable(x,n) : 自由度为 n 的学生氏t分布 
y0 : 第二类型零次贝塞耳函数 
y1 : 第二类型一次贝塞耳函数 
yn(x,n) : 第二类型 n 次贝塞耳函数

<think>好的,用户想了解Makefile中的常用函数及其用法,需要我整理一个列表并提供示例和使用教程。首先,我需要回忆Makefile的函数相关知识,确保信息准确。用户提到的引用1、2、3中提到了一些关键点,比如函数的基本格式、eval函数的作用,以及如何利用函数进行变量定义和条件判断等。 我应该先列出最常用函数,比如wildcard、patsubst、subst、shell等,这些都是基础且使用频率高的。每个函数需要给出功能说明、语法格式和示例,这样用户能清晰理解。比如wildcard用于获取文件列表,patsubst用于模式替换,subst用于字符串替换,shell可以执行shell命令。 接下来,可能需要包括稍微高级的函数,如foreach、if、eval。特别是eval函数,引用3中提到它用于构造动态的规则结构,这部分需要详细解释,可能用户会遇到需要动态生成规则的情况,比如自动处理多个模块。 然后,考虑添加一些实际应用场景的示例,比如自动编译多个源文件,或者根据条件定义变量,这样用户能更好地结合自身项目使用这些函数。同时,需要确保语法格式正确,如使用$(函数名 参数)的形式,参数之间用逗号分隔。 用户可能对某些函数的具体使用细节有疑问,比如如何处理路径中的空格,或者如何避免变量展开的问题,这时候在示例中需要注意引用和转义的处理,比如使用$$来转义$符号。 另外,需要检查是否有遗漏的重要函数,比如origin、info、error等,这些在调试或条件处理中也很重要。比如origin函数可以判断变量的来源,error用于报错终止执行,这些在复杂Makefile中很有用。 最后,生成相关问题,帮助用户进一步学习,比如如何调试Makefile,或者如何处理函数中的参数问题。确保问题覆盖用户可能遇到的后续疑问,提升帮助的全面性。</think>### Makefile 常用函数列表及示例教程 --- #### 一、常用函数列表 1. **`wildcard` 函数** **功能**:获取匹配模式的文件列表。 **语法**:`$(wildcard <pattern>)` **示例**: ```makefile SRC_FILES := $(wildcard src/*.c) # 获取 src 目录下所有 .c 文件 ``` 2. **`patsubst` 函数** **功能**:模式替换,将一组文件按规则替换为目标文件。 **语法**:`$(patsubst <pattern>, <replacement>, <text>)` **示例**: ```makefile OBJ_FILES := $(patsubst %.c, %.o, $(SRC_FILES)) # 将 .c 文件名替换为 .o ``` 3. **`subst` 函数** **功能**:字符串替换。 **语法**:`$(subst <from>, <to>, <text>)` **示例**: ```makefile PATH_FIXED := $(subst :, , $(PATH)) # 将冒号替换为空格 ``` 4. **`shell` 函数** **功能**:执行 shell 命令并返回结果。 **语法**:`$(shell <command>)` **示例**: ```makefile CURRENT_DIR := $(shell pwd) # 获取当前目录路径 ``` 5. **`foreach` 函数** **功能**:循环遍历列表并对每个元素执行操作。 **语法**:`$(foreach <var>, <list>, <text>)` **示例**: ```makefile DIRS := dir1 dir2 dir3 CLEAN_TARGETS := $(foreach dir, $(DIRS), clean_$(dir)) # 生成 clean_dir1, clean_dir2... ``` 6. **`if` 函数** **功能**:条件判断。 **语法**:`$(if <condition>, <then-part>, <else-part>)` **示例**: ```makefile DEBUG_FLAG := $(if $(DEBUG), -g, -O2) # 根据 DEBUG 变量设置编译选项 ``` 7. **`eval` 函数** **功能**:动态生成 Makefile 规则或变量[^3]。 **语法**:`$(eval <text>)` **示例**: ```makefile define RULE_TEMPLATE $(1).o: $(1).c $$(CC) -c $$< -o $$@ endef $(eval $(call RULE_TEMPLATE,main)) # 动态生成 main.o 的编译规则 ``` --- #### 二、综合应用示例 ```makefile # 自动编译多个模块 MODULES := module1 module2 module3 define COMPILE_RULE $(1).o: $(1).c $$(CC) -c $$< -o $$@ endef $(foreach mod, $(MODULES), $(eval $(call COMPILE_RULE,$(mod)))) # 清理所有中间文件 .PHONY: clean clean: rm -f $(foreach mod, $(MODULES), $(mod).o) ``` --- #### 三、注意事项 1. **变量引用**:在函数中使用 `$$` 转义 `$` 符号(如 `eval` 函数中)。 2. **空格处理**:参数中的空格需用引号包裹,例如 `$(subst a,b, "a b c")`。 3. **调试技巧**:使用 `$(info ...)` 函数输出变量值辅助调试。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZhemgLee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值