编写一个mk文件,要求:定义一个target_product变量为raven,当判断target_product变量等于字符串raven或者等于ravenom时打印yes这个语句
时间: 2024-04-01 09:32:50 浏览: 56
可以使用以下mk文件实现:
```
ifeq ($(or $(filter raven,$(target_product)), $(filter ravenom,$(target_product))), raven ravenom)
$(info yes)
endif
```
在这个mk文件中,我们首先使用了ifeq条件语句,判断target_product是否等于raven或者ravenom。为了实现这个判断,我们使用了filter函数来筛选target_product中包含raven或者ravenom的部分,然后再和raven ravenom进行比较,如果相等,则执行$(info yes)打印yes这个语句。
需要注意的是,$(info ...)语句会在make执行时打印出信息,并不会生成任何文件。如果需要将信息输出到文件中,可以使用$(shell echo ...)语句。
相关问题
编写一个mk文件,要求:当判断target_product变量等于字符串raven或者等于ravenom时打印yes这个语句
以下是符合要求的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,...)`,将多个字符串连接起来,如果其中一个字符串不为空,则返回非空字符串。
编写一个mk文件,要求:当判断target_product变量=raven或者ravenom时打印yes这个语句
以下是符合要求的mk文件:
```
ifeq ($(filter $(target_product),raven ravenom),$(target_product))
$(info yes)
endif
```
解释一下:
- `$(filter $(target_product),raven ravenom)`:使用`filter`函数过滤出变量`target_product`在`raven`和`ravenom`中出现的字符串,如果匹配到,则返回匹配的字符串;否则返回空字符串。
- `ifeq ($(filter $(target_product),raven ravenom),$(target_product))`:如果过滤出来的字符串等于`target_product`,则执行后面的语句。
- `$(info yes)`:在条件满足的情况下,打印“yes”这个语句。
注意事项:
- 代码中的空格和缩进必须要按照规定的格式写,否则会出现错误。
- `filter`函数的用法是:`$(filter pattern...,text)`,过滤出`text`中匹配`pattern`的字符串。可以使用空格分隔多个`pattern`。
阅读全文