什么网站可以找人做系统,汽车集团网站建设,wordpress主题搜索引擎,公司装修效果图办公室文章目录 一、变量1.1 定义简单变量1.2 定义数组1.3 引用变量1.4 规则中定义变量 一、变量
1.1 定义简单变量
用变量名 值的语法来定义变量。这些变量可以用于存储命令、文件名、目录路径等信息#xff0c;以便在Makefile规则中重复使用
# 定义一个变量
VAR_NAME value# … 文章目录 一、变量1.1 定义简单变量1.2 定义数组1.3 引用变量1.4 规则中定义变量 一、变量
1.1 定义简单变量
用变量名 值的语法来定义变量。这些变量可以用于存储命令、文件名、目录路径等信息以便在Makefile规则中重复使用
# 定义一个变量
VAR_NAME value# 定义多行变量使用反斜杠 \ 进行换行
MULTILINE_VAR \line 1 \line 2 \line 3# 使用变量
target:echo $(VAR_NAME)echo $(MULTILINE_VAR)示例如下
ips 192.168.2.1 192.168.2.99deploy:echo $$ips# code result: (make deploy)
192.168.2.1 192.168.2.99在上述示例中VAR_NAME是一个简单的变量存储着value的值。MULTILINE_VAR是一个多行变量包含了三行文本。
在target规则中可以通过$(VAR_NAME)和$(MULTILINE_VAR)来使用这些变量。echo命令将会输出变量的值。
请注意变量名是大小写敏感的在Makefile中使用变量时需要使用$()或${}将变量名包围起来。
定义变量时可以使用或者:操作符。是简单赋值操作符而:是覆盖前面定义的变量的操作符。
1.2 定义数组
在Makefile中没有直接支持定义数组的语法。但是可以通过使用空格分隔的变量来模拟数组的行为。以下是一种常见的方法
# 定义数组元素使用空格分隔
ARRAY : element1 element2 element3# 使用数组元素
target:echo $(ARRAY)echo $(word 2, $(ARRAY)) # 访问数组中的特定元素# make target 的 code result
element2示例如下注意因为 for 被拆分为了多行所以 for 里的每行要加分号;
ips 192.168.2.1 192.168.2.99
deploy:for ip in $(ips); do \echo $$ip; \done# make deploy 的 code result
192.168.2.1
192.168.2.99在上述示例中ARRAY被定义为一个由空格分隔的元素列表。在target规则中可以使用$(ARRAY)来输出整个数组。
如果想要访问数组中的特定元素可以使用Makefile的函数来实现。在示例代码中使用了$(word index, text)函数来获取数组中的第二个元素。
请注意由于Makefile的变量只是简单的字符串替换因此在使用数组元素时需要注意上下文。例如在命令中使用数组元素时应该将其用引号括起来以确保正确处理各个元素。
尽管这种方式可以模拟数组的行为但是在 Makefile 中没有类似编程语言中的数组操作例如追加元素、删除元素等。如果需要更复杂的数组操作可能需要使用其他语言或工具来处理。
1.3 引用变量
在Makefile中当你需要引用一个变量时需要使用$$符号来转义它。这是因为Makefile中$符号有特殊含义用于展开变量或执行命令替换。
以下是一些常见的情况需要使用$$来引用变量
在规则的命令中引用变量
target:echo $$VAR_NAME在变量的值中引用其他变量
VAR1 value1
VAR2 $(VAR1) value2在上述示例中通过$$VAR_NAME和$(VAR1)来引用变量。
请注意只有在Makefile的规则或变量的值中需要引用变量时才需要使用$$。在其他地方例如Makefile文件中的注释或普通文本中不需要使用$$来引用变量。
确保在Makefile中正确使用$$转义符号来引用变量以避免意外的展开或替换行为。
1.4 规则中定义变量
在Makefile中你可以在 规则 中定义变量。这样定义的变量只在该步骤中有效并且可以使用该步骤中的其他命令引用变量。
以下是一个示例
target:echo Step 1$(eval VAR_NAME : value) # 在步骤中定义变量echo Step 2echo $(VAR_NAME) # 在同一步骤中引用变量