如何将额外的自定义 ./configure autotools 选项传递给 Buildroot 包?

Cir*_*四事件 5 autotools configure buildroot

例如,我想将选项添加--enable-foo --enable-bar到命令中./configure

许多./configure选项可以通过配置间接设置BR2_,但许多软件有如此多的选项,以至于不可能BR2_为每个可能的选项都使用一个配置./configure

是否有适用于所有自动工具包的通用机制?

Cir*_*四事件 2

我认为截至 2017.02 目前还没有通用方法,因为package/pkg-autotools.mk包含:

# Configure package for target
define $(2)_CONFIGURE_CMDS
    (cd $$($$(PKG)_SRCDIR) && rm -rf config.cache && \
    $$(TARGET_CONFIGURE_OPTS) \
    $$(TARGET_CONFIGURE_ARGS) \
    $$($$(PKG)_CONF_ENV) \
    CONFIG_SITE=/dev/null \
    ./configure \
        --target=$$(GNU_TARGET_NAME) \
        --host=$$(GNU_TARGET_NAME) \
        --build=$$(GNU_HOST_NAME) \
        --prefix=/usr \
        --exec-prefix=/usr \
        --sysconfdir=/etc \
        --localstatedir=/var \
        --program-prefix="" \
        --disable-gtk-doc \
        --disable-gtk-doc-html \
        --disable-doc \
        --disable-docs \
        --disable-documentation \
        --with-xmlto=no \
        --with-fop=no \
        --disable-dependency-tracking \
        --enable-ipv6 \
        $$(DISABLE_NLS) \
        $$(SHARED_STATIC_LIBS_OPTS) \
        $$(QUIET) $$($$(PKG)_CONF_OPTS) \
    )
endef
else
Run Code Online (Sandbox Code Playgroud)

我看不到任何插入任意选项的方法,因为$$($$(PKG)_CONF_OPTS)它是从每个包的设置的package.mk,并且其他变量似乎也有特定的目的,不应该被弄乱。

但我认为如果我们添加以下内容,这可以很容易地修复:

$$($$(PKG)_CONF_OPTS_EXTRA)
Run Code Online (Sandbox Code Playgroud)

然后从 CLI 你可以执行以下操作:

make MYPACKAGE_CONF_OPTS_EXTRA="--enable-foo --enable-bar"
Run Code Online (Sandbox Code Playgroud)

最后,对于某些软件包,您可以摆脱现有的make配置,例如 for host-qemu,它尚未转换为自动工具,我设法简单地通过以下方式获得额外的选项:

HOST_QEMU_OPTS="--enable-sdl --with-sdlabi=2.0"
Run Code Online (Sandbox Code Playgroud)

因为幸运的是该包恰好使用+=而不是=在 Makefile 上。

托马斯的回答:/sf/answers/3469957781/也表明,如果不修改新的配置选项,这是不可能的。