gnu-make - 如何检测是否需要共享库符号链接?
问题描述
我有多个项目共享的makefile,它链接共享库。源——和库名称——由每个项目自己的GNUmakefile
.
当 library-name ( ${SO}
) 包含版本(例如libfoo.so.2
)时,我需要创建一个符号链接:
libfoo.so -> libfoo.so.2
在此示例中删除版本号的优雅方法是什么?
SO_LINK=$(???? ${SO})
...
ifneq(${SO_LINK},${SO})
ln -sf ${SO} ${SO_LINK}
endif
解决方案
您可以使用subst
获取版本,然后使用filter-out
orsubst
从库名称中减去版本。此外,您可以提取后缀SUB=$(suffix $(VAR))
VAR = libfoo.so.2
TTT=libfoo.so
TMPVAR := $(VAR)
SUB=$(subst $(TTT),, $(TMPVAR))
VAR = $(filter-out $(SUB) , $(TMPVAR))
all:
@echo "VAR is: $(VAR)"
推荐阅读
- javascript - 如何在 JavaScript 中使用 XPath 从命名空间 OOXML 中进行选择?
- batch-file - 创建批处理文件 - 根据变量,搜索文件类型并提取或移动
- postgresql - 使用 Postgres 解析 XML 数据
- c# - C#葡萄牙语字符问题
- python - Openpyxl Workbook.save 函数创建损坏且无法打开的 Excel (.xlsx) 文件
- java - 尝试使用 dynamodb 和 graphql 运行我的 Spring Boot 应用程序时,我不断收到此 @bean 错误
- java - 防止 ActiveMQ 重新连接不成功时自动退出
- python - Python Selenium TypeError:“NoneType”对象不可下标
- python - 射击时我无法在 python 太空入侵者游戏中移动我的角色(使用 Zelle 图形包)
- verilog - 如何在verilog systemverilog中分配给genvar?