if-statement - Makefile:根据安装的内容选择值
问题描述
事情是这样的:我们有几个发行版来构建 Debian 软件包,但问题是其中一个比另一个旧,并且所需的 deb 包的名称make
不同。
例如,在 Debian Jessie 中,有一个包liblog4cxx10-dev
,在 Ubuntu 和较新的 Debian 发行版中被命名为liblog4cxx-dev
. 如果未安装软件包 -make
返回失败,这对我们来说是正确的行为。
这是 Makefile 的部分代码:
all: build
#yadayadayada
ifeq ($(dpkg -l | grep -E '\sliblog4cxx10-dev:?'), )
build_dependences += liblog4cxx10-dev(>=0.10.0)
else
build_dependences += liblog4cxx-dev(>=0.10.0)
endif
# build_dependences += liblog4cxx10-dev(>=0.10.0)
# build_dependences += liblog4cxx-dev(>=0.10.0)
build_dependences += qos-libqos-dev(>=1.3.0)
build_dependences += libjsoncpp-dev(>=0.5.0)
我正在尝试为新旧发行版制定通用解决方案,例如:
if <package of Jessie repo is installed>
<add old package name to var>
elif <package of Bionic repo is installed (the case if we are building on newer distros, not Jessie, where older name of package exists)>
<add new package name to var>
endif
但是 Makefile 语法没有正常elif
的 . 我需要该片段来检查是否安装了 Jessie 或 Bionic 的包以将包名称添加到build_dependence
var 并开始编译。
有什么建议么?
解决方案
推荐阅读
- elasticsearch - ElasticSearch 5.2 [script] 中 START_OBJECT 的未知键。要求
- android - 我使用 Lua 脚本下载了 mp4 文件,但 TikTok(其他应用程序)找不到视频
- javascript - 使用 knex.js 进行模式匹配
- java - 一串二进制数从一串十进制数中提取
- c++ - 映射进程和映射文件(非平台)具有不同的团队 ID
- javascript - 组件错过了第一个更新周期
- python - 我需要使用检查元素从网站获取特定数据
- typescript - 打字稿条件参数类型不起作用
- kubernetes - 重新启动在主图表的子图表中定义的部署
- grpc-go - protoc-gen-go 和 protoc-gen-go-grpc 的区别