【问题标题】:debhelper: add `prefix=/usr' to all implicit make invocationsdebhelper:将 `prefix=/usr' 添加到所有隐式 make 调用
【发布时间】:2013-11-26 12:22:40
【问题描述】:

我有一个Makefile,以

开头
prefix      = /opt/$(PACKAGE)

如果有人想要非/opt 安装,则需要make prefix=/usr。没有./configure(真的不需要)。

该软件包可通过以下方式轻松 debianizable

%:
        dh $@ 

debian/rules 一样,除了由于prefix=/usr 的要求,人们不得不在规则中乱扔垃圾

override_dh_auto_install:
        make prefix=/usr DESTDIR=debian/BUILD install

(也是dh_auto_build)。

告诉 debhelper 向所有 make 调用添加 prefix= 的优雅方法是什么(最好不接触 makefile,否则有很多解决方法)?

【问题讨论】:

    标签: makefile debian debhelper


    【解决方案1】:

    你可以这样做:

    %:
        prefix=/usr dh $@
    

    这是因为 make 将环境变量转换为 make 变量,见 https://www.gnu.org/software/make/manual/html_node/Environment.html

    只需确保上游 Makefile 使用如下条件赋值:

    prefix ?= /usr/local
    

    Ciao, 安东尼奥

    【讨论】:

      【解决方案2】:

      在您的规则文件(或任何琐碎的 sn-p 所在的位置)中导出 MAKEFLAGS=prefix=/usr 是否符合您的要求?

      【讨论】:

      • 它不起作用。我认为 dh “消毒” MAKEFLAGS。奇怪的是,如果我将 echo "$$MAKEFLAGS" 添加到我的 all: 目标中,则标志似乎是“w”(单个字符)
      • 嗯...所以你的 MAKEFLAGS 有什么东西在踩。我看到了关于 -j 修改 MAKEFLAGS 的参考,但没有比这更笼统的了。我怀疑它会,但您可以尝试看看 'dh $@ -O=prefix=/usr' (或者该语法需要完全正常工作)是否有效?
      • -O prefix=/usr-O=prefix=/usr 都不起作用,而且我不知道“但是语法需要起作用”:) -O 似乎没有记录
      • 这是一个 debhelper 选项。来自 dh 手册页中的 [debhelper options]。但是我正在尝试将我目前还没有任何真正知识的部分组合在一起。对不起。
      猜你喜欢
      • 2012-07-03
      • 1970-01-01
      • 1970-01-01
      • 2013-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-29
      相关资源
      最近更新 更多