编写一个mk文件,要求:当判断target_product变量等于字符串raven或者等于ravenom时打印yes这个语句
时间: 2024-04-01 11:32:50 浏览: 81
以下是符合要求的mk文件:
```
ifeq ($(or $(filter $(target_product),raven),$(filter $(target_product),ravenom)), $(target_product))
$(info yes)
endif
```
解释一下:
- `$(filter $(target_product),raven)`:使用`filter`函数过滤出`raven`中匹配`target_product`的字符串,如果匹配到,则返回匹配的字符串;否则返回空字符串。
- `$(filter $(target_product),ravenom)`:使用`filter`函数过滤出`ravenom`中匹配`target_product`的字符串,如果匹配到,则返回匹配的字符串;否则返回空字符串。
- `$(or $(filter $(target_product),raven),$(filter $(target_product),ravenom))`:使用`or`函数将`$(filter $(target_product),raven)`和`$(filter $(target_product),ravenom)`的结果连接起来,如果有一个结果不为空,则返回非空字符串。
- `ifeq ($(or $(filter $(target_product),raven),$(filter $(target_product),ravenom)), $(target_product))`:如果上述条件中返回的字符串等于`target_product`,则执行后面的语句。
- `$(info yes)`:在条件满足的情况下,打印“yes”这个语句。
注意事项:
- 代码中的空格和缩进必须要按照规定的格式写,否则会出现错误。
- `filter`函数的用法是:`$(filter pattern...,text)`,过滤出`text`中匹配`pattern`的字符串。可以使用空格分隔多个`pattern`。
- `or`函数的用法是:`$(or string1,string2,...)`,将多个字符串连接起来,如果其中一个字符串不为空,则返回非空字符串。
阅读全文