Function
或者
字符串
字符串替换和分析的函数
subst
$(subst from,to,text)
文件
dir
$(dir names…)
notdir
$(notdir names…)
suffix
$(suffix names…)
basename
$(basename names…)
addsuffix
$(addsuffix suffix,names…)
addprefix
$(addprefix prefix,names…)
join
$(join list1,list2)
wildcard
$(wildcard pattern)
realpath
$(realpath names…)
abspath
$(abspath names…)
Conditional
if
$(if condition,then-part[,else-part])
or
$(or condition1[,condition2[,condition3…]])
and
$(and condition1[,condition2[,condition3…]])
foreach
$(foreach var,list,text)
file
$(file op filename[,text])
call
$(call variable,param,param,…)
value
$(value variable)
eval
origin
$(origin variable)
flavor
$(flavor variable)
Control Make函数
error
$(error text…)
warning
$(warning text…)
info
$(info text…)
shell
$(shell)
这个是Makefile中的一个函数,通过它可以执行shell命令。
如输出当前目录:
echo $(shell pwd)
/usr/bin
输出文件内容:
echo $(shell cat ./data)
cat...
在编写Makefile的时候,有时候需要在Makefile中对变量做一些求值,如加减乘除等算术计算。这个时候需要用到shell。
如下shell中,我们需要计算512 + 512 = ?
sh-3.1$ expr 512 + 512
1024
我们还可以用一对括号“()”将512 + 512括起来:(512 + 512)。但这样直接括起来的话会报语法错误:
sh-3.1$ expr (512 + 512)
sh: syntax error near unexpected token `512'
应该这样:
sh-3.1$ expr \( 512 + 512 \)
1024
这样看起来有点多余。这里是多此一举,不过复杂点表达式是需要的,比如:512 * (1 + 1),这个后面会讲到。
计算512 - 512 = ?
sh-3.1$ expr 512 - 512
0
如果计算512 * 2 = ?
是不是expr 512 * 2 。。。?
sh-3.1$ expr 512 * 2
expr: syntax error
报语法错误。应该这样:
sh-3.1$ expr 512 \* 2
1024
计算1024 / 512 = ?
sh-3.1$ expr 1024 / 512
2
计算512 * (1 + 1)
sh-3.1$ expr 512 \* \( 1 + 1 \)
1024
在makefile中计算512 * (1 + 1)= ?
echo "512 * (1 + 1)" = $(shell expr 512 \* \( 1 + 1 \))
有时候这样是有问题的,它输出:
512 * (1 + 1) =
可以这样:
echo "512 * (1 + 1)" = $(shell expr 512 \\* \( 1 + 1 \))
512 * (1 + 1) = 1024
这样就计算出来了。
这个例子似乎没什么作用。但在对多个变量进行计算求值时是有用的。如下:
size_in_block = 1
这里要计算size_in_block变量+1的结果。
echo "512 * ($(size_in_block) + 1)" = $(shell expr 512 \\* \( $(size_in_block) + 1 \))
512 * (1 + 1) = 1024
guile
相关推荐
7. **函数** (Functions): Makefile 提供了一些内置函数,可以用来处理字符串、列表和其他数据结构。 #### 四、Makefile 示例详解 以下是一个简化的 Makefile 示例: ```makefile CC = gcc CFLAGS = -Wall ...
4. **函数式编程**:通过`eval`和`call`函数,可以在`Makefile`中实现函数式编程的效果。 编写`Makefile`时,需遵循以下原则: 1. **最小化目标和依赖**:尽可能明确每个目标的依赖项,避免过于宽泛的依赖导致不必...
第二课:初识makefile的结构 第三课:伪目标的约会 第四课-变量和不同的赋值方式 第五课-预定义变量的使用 第六课-变量的高级主题(上) 第七课-变量的高级主题(下) 第八课-条件判断语句 第九课-函数定义及调用 第...
Makefile中常用的函数 Makefile中常用的函数是指在Makefile中使用函数来处理变量,从而让我们的命令或是规则更为灵活和具有智能。Make所支持的函数并不多,但是已经足够我们的操作了。函数调用后,函数的返回值可以...
### Makefile常用函数详解 #### 一、字符串处理函数 在Makefile中,字符串处理函数是构建自动化构建脚本的关键工具之一,它们帮助开发者在构建过程中动态地处理和生成文件名、目录路径以及各种配置参数。 ##### 1...
Makefile还提供了处理整个函数库文件的方法,使得开发者可以轻松地管理这些文件。 通过以上介绍可以看出,Makefile不仅是一种强大的构建工具,而且具有丰富的特性和灵活性,可以帮助开发者高效地管理和构建项目。
### makefile常用函数语法总结 在嵌入式平台或手机平台开发过程中,编写高效且易于维护的`Makefile`文件是十分重要的。`Makefile`不仅能够自动化编译过程,还可以通过灵活运用内置函数增强其功能性和可读性。本文将...
"Makefile 常用函数语法总结" Makefile 是一个自动构建工具,它使用一种特殊的语法来描述如何构建项目。Makefile 中的函数语法是指在 Makefile 中定义和使用函数的方式,以下是 Makefile 中常用的函数语法总结。 ...
如果源文件中的函数或变量在其他文件中被引用,那么这些文件需要一起编译并链接。 ### 2. Makefile 介绍 #### 2.1 Makefile 的规则 规则通常包含目标(target)、依赖项(dependencies)和命令(commands)。目标...
- **函数和宏**:利用Makefile提供的内置函数来处理字符串、路径等,增加Makefile的功能性和复杂度。 总之,Makefile的强大之处在于它的灵活性和扩展性,可以根据项目的具体需求定制各种复杂的构建逻辑。掌握...
### Makefile 函数详解 #### 一、概述 在构建自动化工具Makefile中,函数的使用可以帮助我们更灵活地处理各种构建任务。Makefile通过一系列预定义的函数提供了对字符串处理、列表操作等功能的支持,使得我们可以...
- **函数**:Makefile 支持一系列内置函数,如字符串处理函数和文件名操作函数,这些函数可以帮助开发者编写更加复杂的构建逻辑。 #### 结论 Makefile 是软件工程中不可或缺的一部分,尤其是对于需要频繁构建和...
【跟我一起写 Makefile】是一篇关于如何编写Makefile的教程,主要针对使用汇编语言编程的情况。Makefile是Unix和类Unix系统中用于自动化编译和链接过程的文件,尤其在大型工程中,编写Makefile显得尤为重要,因为它...
1. **输出变量值**:通过在makefile中插入`warning`函数来查看变量的当前值。 2. **命令行选项**:使用`--just-print`、`--print-data-base`和`--warn-undefined-variables`等选项帮助诊断问题。 3. **具保护的编程...
《跟我一起写 Makefile》由陈皓撰写,祝冬华整理,是一份深入讲解Makefile的教程。Makefile是Linux环境中用于自动化构建、编译和链接程序的重要工具,它通过简洁的规则定义来管理复杂的项目构建过程。以下是该文档...
Makefile支持变量定义和简单的函数操作,可以用来存储重复使用的字符串,减少Makefile的冗余。 ```makefile CC = gcc CFLAGS = -Wall all: program program: source.o $(CC) $(CFLAGS) -o $@ $^ ``` 这里,`CC`...
在实际的项目中,Makefile可能会变得非常复杂,包括多个目标、多种编译规则、条件判断、变量和函数等高级特性。例如,它可以包含特定平台的编译选项,处理不同类型的文件,或者调用外部脚本来执行测试和安装步骤。 ...
makefile常用函数语法总结.doc