ifneq ($(filter $(strip $(LINUX_KERNEL_VERSION)),kernel-4.9 kernel-4.14 kernel-4.19),) 使用举例
时间: 2024-10-15 15:19:35 浏览: 41
这个ifneq条件语句是Makefile中的一个典型用法,用于检查变量`LINUX_KERNEL_VERSION`的值是否包含特定的字符串组合。`strip`函数用于删除变量值中的空白字符,`filter`则用来筛选出匹配的部分。`ifneq`表示如果不等于,则执行其后的条件块。
例如,假设你有一个项目,只针对Linux内核版本4.9、4.14和4.19进行构建,那么可能会有类似这样的规则:
```makefile
LINUX_KERNEL_VERSION := kernel-4.9 kernel-4.14 kernel-4.19
ifeq ($(filter $(strip $(LINUX_KERNEL_VERSION)),kernel-4.9 kernel-4.14 kernel-4.19),)
# 当LINUX_KERNEL_VERSION只有4.9、4.14或4.19时,执行这里的任务
build_for_current_kernel:
@echo "Building for Linux kernel version $(LINUX_KERNEL_VERSION)"
else
# 否则(比如LINUX_KERNEL_VERSION还包括其他版本),跳过此任务
build_for_current_kernel:
@echo "Unsupported Linux kernel version: $(LINUX_KERNEL_VERSION)"
endif
```
当你运行`make build_for_current_kernel`时,如果`LINUX_KERNEL_VERSION`确实是上述列出的版本之一,就会打印出构建信息;否则,会显示一个警告消息。
阅读全文