首页 > 解决方案 > 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_dependencevar 并开始编译。

有什么建议么?

标签: if-statementmakefile

解决方案


推荐阅读